Здравствуйте, пытаюсь читать из сокета с использованием select() но чегото невыходит. Такая програмка:
tv.tv_sec = 5;
tv.tv_usec = 0;while(1){
FD_ZERO(&rfds);
FD_SET(sid, &rfds);if ((iosize = select(1, &rfds, NULL, NULL, &tv)) > 0){
iosize=read(sid, buf, PACKET_SIZE-1);
printf("Paket poluschen - %s\n",buf);
}else{
printf("Timeout\n");
}
}
Хоть приходит пакет, хоть неприходит,, всёравно select() ждёт 5 сек и вываливается с 0.
Что я неправильно делаю, подскажите!Спасибо!
> if ((iosize = select(1, &rfds, NULL, NULL, &tv)) > 0){Надо
if ((iosize = select(sid + 1, &rfds, NULL, NULL, &tv)) > 0){
$man select
<...>
int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
<...>
n is the highest-numbered descriptor in any of the three sets, plus 1.
<...>