Есть такой код простого сервера (выдержка):
#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
работает великолепно.
Подскажите, пожалуйста, где здесь ошибка? Даже не знаю, в каком месте её искать.
Спасибо.