socket sind Daten da.

18/10/2007 - 11:10 von Johann Obermayr | Report spam
Hallo,

Habe folgende Funktion, um festzustellen, ob Daten auf einem socket
vorhanden sind.

int SocketHaveDataRecv(SOCKET s, DWORD dwTimeout /* in µs */)
{
fd_set fd;

FD_ZERO( &fd);
FD_SET( s, &fd );

TIMEVAL tv;
tv.tv_sec = dwTimeout / 1000000;
tv.tv_usec = (dwTimeout % 1000000);
return select( 0, &fd, NULL, NULL, &tv );
}

Unter Windows funktioniert das ohne Probleme, nur unter
Linux liefert die Funktion immer 0, auch wenn Daten vorhanden
sind.

Warum ?

Danke
Jimmy
 

Lesen sie die antworten

#1 Jakob Hirsch
18/10/2007 - 11:41 | Warnen spam
Quoting Johann Obermayr:

return select( 0, &fd, NULL, NULL, &tv );



man select sagt:
nfds is the highest-numbered file descriptor in any of the three sets,
plus 1.

Also:
return select( s+1, &fd, NULL, NULL, &tv );

Und die Fehlerbehandlung nicht vergessen...

Ähnliche fragen