Есть такой код простого сервера (выдержка):
#define BUFSIZE 100
char buf[BUFSIZE];
FD_ZERO(&fdset);
for( ; ;){
FD_SET(sockdes, &fdset);
rv = select(sockdes + 1, &fdset, NULL, NULL, NULL);
if( rv < 0 ) derror("select()");
if( FD_ISSET(sockdes, &fdset) ){
ssize_t rd = read(sd, buf, BUFSIZE); // Здесь ошибка
....
}
}
Сокет создан как SOCK_STREAM. При соединении с ним: ``nc localhost 5000''
результат функции постоянно равен ``-1'' (т.е. ошибки), хотя даже никаких
данных мы еще в сокет не посылали. Аналогичный код, только для SOCK_GRAM
работает великолепно.
Подскажите, пожалуйста, где здесь ошибка? Даже не знаю, в каком месте её искать.
Спасибо.
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от cvv
Ответ на:
комментарий
от cvv
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум вопрос про select() (2013)
- Форум select (2006)
- Форум select, FD_ISSET, socket, тупняк (2010)
- Форум помогите с select/pipe, плииииз... (2003)
- Форум помогите с select/pipe, плииииз... (2003)
- Форум Select глючит? (2003)
- Форум Проблема с select (2002)
- Форум forkpty и read (2004)
- Форум Можно ли с select() отслеживать, что в файле появились новые данные? (2011)
- Форум Консольный обмен сообщениями (2017)