The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"select()"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"select()"
Сообщение от guest Искать по авторуВ закладки(??) on 22-Окт-04, 17:32  (MSK)
Расскажите пожалуйста про select()
Я не понимаю ничего из манов,если можно приведите примерчик..
Очень нужно для написания сетевой проги
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

  • select(), Vladislav Lazarenko, 19:40 , 22-Окт-04, (1)
    • select(), mthawk, 12:51 , 23-Окт-04, (2)
      • select(), Vladislav Lazarenko, 12:57 , 23-Окт-04, (3)
        • select(), Soldier, 14:06 , 23-Окт-04, (4)
          • select(), Vladislav Lazarenko, 14:09 , 23-Окт-04, (5)
            • select(), Soldier, 14:41 , 23-Окт-04, (6)

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "select()"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 22-Окт-04, 19:40  (MSK)
>Расскажите пожалуйста про select()
>Я не понимаю ничего из манов,если можно приведите примерчик..
>Очень нужно для написания сетевой проги

Здравствуйте.
Почему бы Вам не почитать мануал на русском языке? К тому же, откуда Вы знаете, что Вам нужен select(), если Вы ничего не знаете о нем и не можете понять?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "select()"
Сообщение от mthawk emailИскать по авторуВ закладки(ok) on 23-Окт-04, 12:51  (MSK)
Вот лично мне не понятно, неужели составляет столько труда скопировать и вставить 3 тсрочки собственного кода, что бы помоч страждущему? Лично я тоже  и из манов и из статей так и не разобрался как работать с этой функцией, хотя назначение ее мне понятно.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "select()"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 23-Окт-04, 12:57  (MSK)
Здравствуйте. Да будете вы вознаграждены за вашу настойчивость...

static ValidateSocketType ValidateSocket(SOCKET socket,int *error_out)
{
  ValidateSocketType result=VS_CONNECTING;
  int socketerror=0;
  int selecterror;
  struct fd_set write;
  struct timeval timeout={0,0};

  FD_ZERO(&write);
  FD_SET(socket,&write);
  selecterror=select(0,NULL,&write,NULL,&timeout);
  if (selecterror==1)
    result=VS_CONNECTED;

  switch(selecterror)
  {
    case SOCKET_ERROR:
      socketerror=WSAGetLastError();
      break;
    default:
    {
      int length=sizeof(int);
      getsockopt(socket,
               SOL_SOCKET,
               SO_ERROR,
               (char *)&socketerror,
               &length);
      break;
    }
  }
  if(socketerror!=0)
  {
    result=VS_CONNECTFAILED;
    *error_out=socketerror;
  }

/*    CRMTrace("contcp_nt: ValidateSocket: selecterror= %d, socket error=%d", */
/*             selecterror, */
/*             socketerror); */
  return result;
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "select()"
Сообщение от Soldier Искать по авторуВ закладки(??) on 23-Окт-04, 14:06  (MSK)
Это был фрагмент видузового приложения или это что-то типа реализации
WinSuck под  Юникс? :)))

Эт я не придираюсь - чистое любобытсво и ничего более :)))


  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "select()"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 23-Окт-04, 14:09  (MSK)
>Это был фрагмент видузового приложения или это что-то типа реализации
>WinSuck под  Юникс? :)))
>
>Эт я не придираюсь - чистое любобытсво и ничего более :)))

Это была функция приложения для Windows на Си. Можешь и придираться, не я же это писал)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "select()"
Сообщение от Soldier Искать по авторуВ закладки(??) on 23-Окт-04, 14:41  (MSK)
> Можешь и придираться, не я же это писал)

Придираюсь :)))

Да вобщем-то под Юникс (покрайней мере под Linux) практически также. А в
man select прекрасный пример приведен, но если товарисчи не смогли с ним
разобраться, то боюсь твой пример их только еще больше запутает :)))

P.S.
Вот пример из man select. Товарищи, объясните, ну что в нем непонятного
та? Для сетевой проги вместо select(1,...) используйте select(fd+1,...),
где fd это дескриптор полученный вызовом функции connect если клиент,
или  вызом accept если сервер:


#include <stdio.h>
       #include <sys/time.h>
       #include <sys/types.h>
       #include <unistd.h>

       int main(void)
       {
           fd_set rfds;
           struct timeval tv;
           int retval;

           /* Watch stdin (fd 0) to see when it has input. */
           FD_ZERO(&rfds);
           FD_SET(0, &rfds);
           /* Wait up to five seconds. */
           tv.tv_sec = 5;
           tv.tv_usec = 0;

           retval = select(1, &rfds, NULL, NULL, &tv);
           /* Don't rely on the value of tv now! */

           if (retval)
               printf("Data is available now.\n");
               /* FD_ISSET(0, &rfds) will be true. */
           else
               printf("No data within five seconds.\n");

           return 0;
       }

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру