Работаю с сетевыми сокетами.
Читал про неблокирующиеся сокеты, написал программку. Вроде работает, но иногда зависает.
Собственно ворос заключается в том, как правильно использовать select. А именно, необходимо ее вызывать до чтения из сокета или после? В мануалах по select написано очень много и там не просто разобратся.
Я действую следующим образом:
вызываю чтение из сокета
устанавливаю для select переменную типа fd_set
/*
fd_set set;
FD_ZERO(&set);
FD_SET(sock,&set);
*/
Настраиваю интервал ожидания.
Вызываю select
Если селект вернул не 0 (осталось еще время для ожидания) - тогда в буфер что-то было прочитанно - обрабатываю это.
Если - 0, значит время истекло.
И еще один вопрос в ту же тему. Читать из сокета лучше recv или read? Они вроде бы оба допустимы. Есть ли разнится?
Ответ на:
комментарий
от mv
Ответ на:
комментарий
от trex6
Ответ на:
комментарий
от mv
Ответ на:
комментарий
от klalafuda
Ответ на:
комментарий
от trex6
Ответ на:
комментарий
от klalafuda
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум select, FD_ISSET, socket, тупняк (2010)
- Форум select и non-blocking fifo (2007)
- Форум Непонятки с сокетами (2006)
- Форум Проблема с сокетами (2011)
- Форум Неблокирующий сокет (2004)
- Форум неблокирующий сокет (2004)
- Форум C++ неблокирующие сокет (2018)
- Форум неблокирующий сокет & poll() (2005)
- Форум нити vs неблокирующий сокет (2012)
- Форум poll() неблокирующий сокеты и read() (2006)