Thread win32 udp server (5 answers)
Opened by hudo at 2007-08-09 04:12

murphy
 2007-08-10 23:40
#97934 #97934
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
hudo+2007-08-10 11:38:58--
[...] Kann mir jemand eine funktionierende Methode fuer den timeout sagen ?
Ich habe mit folgendem code rumexperimentiert, das funktioniert aber nicht sauber [...]


Wahrscheinlich ist hier der Einsatz des -f select-Systemaufrufes sinnvoll.

Quote
[...] Der recv()-Aufruf merkt sich die Quelladresse des zuletzt empfangenen Datagramms, dann benutzt send() daraus die Adresse, ist Eigenheit von IO::Socket. [...]


Mag sein, allerdings ist das weder in IO::Socket noch in -f send oder -f recv so dokumentiert. Im Gegenteil steht sogar in -f send explizit der Satz "On unconnected sockets you must specify a destination to send TO, in which case it does a C "sendto"". Und ganz nebenbei ist es auch noch unsicher, falls man es mal in einer Multithread- oder Multiprozessumgebung verwendet.

Auch unter C funktioniert manchmal der send-Systemaufruf statt des sendto-Systemaufrufes auf UDP-Sockets. Aber streng nach POSIX-Standard ist das Verhalten hier eben nicht definiert. Gerade wenn das Programm unter mehreren Betriebssystemen laufen soll, würde ich mich lieber nicht auf derart arkane undokumentierte Features verlassen.
When C++ is your hammer, every problem looks like your thumb.

View full thread win32 udp server