PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Socket auslesen



Poseidonius
12-09-2006, 11:19
Hallo zusammen,

ich schicke ein paar Daten via TCP/IP durch die Gegend ... das funktioniert soweit auch gut, nur das Einlesen macht mir etwas Kopfzerbrechen ...

Kann ich "recv" so konfigurieren, dass, wenn nichts angekommen ist das Programm nicht blockiert wird? Also etwa


while (recv(socket,input,MAXLINE,0)<=0) functionA();
printf("Daten angekommen\n");
...

Vielen Dank

Poseidonius
12-09-2006, 11:35
http://www.pc-adviser.de/socket_programmierung.html#fcntl

hilft bei dieser Frage richtig gut weiter
einfach
fcntl(Param.TCPsocket, F_SETFL, O_NONBLOCK) einfuegen und es tut. Warum ist dieser Weg von der Ressourcenseite gesehen schlechter als select()?

anda_skoa
12-09-2006, 14:32
Der Unterschied zu select() ist, daß bei select() die Applikation keine Aktivität hat, wenn keine Daten eintreffen.

Bei non-blocking muß man regelmäßig nachsehen ob etwas gekommen ist.

Ciao,
_