sockets: geschlossene verbindung bemerken...
-
Hi,
ich arbeite mit mingw und winsock.
wie kann ich herausfinden, wenn das andere ende der verbindung dieselbe geschlossen hat (geschlossen mit close/closesocket)?
vor dem schließen will ich nicht noch einen token rüberschicken, um der anderen seite das ende der verbindung mitzuteilen.danke
-
read() liefert dann Länge 0 als gelesen zurück, ohne sonstigen Fehler, IIRC.
-
hi! beim create eines sockets unter linux gibs so eine funktion setsockopt....wie sieht das bei winsock aus...gibt es da auch so etwas?
bye
m_sock = socket ( AF_INET, SOCK_STREAM, 0 ); // TIME_WAIT - argh int on = 1; if ( setsockopt ( m_sock, SOL_SOCKET, SO_REUSEADDR, ( const char* ) &on, sizeof ( on ) ) == -1 ) { return false; }
-
meine antwort steht dar:
[url]
http://www.c-plusplus.net/forum/viewtopic.php?t=83779
[/url]cool;-)
cu
-
wenn du mitbekommst dass die verbindung beendet wurde, ist es bereits zu spät. dann kann man nichts mehr hinterhersenden.
-
socket opts kann man auch genauso unter windoof setzen.
ich wollt nur wissen, wenn die andere stelle "auflegt".
wenn ich das nicht durch irgendwas bemerken kann, dann muss die gegenstelle eben "ich leg jetzt auf" vorher sagen... so meinte ich das.@net: is mir schon sonnenklar, dass man durch geschlossene leitungen nix schicken kann...
der link hat mir übrigens nichts gebracht, weil ich setsockopt schon vorher kannte.
also checke ich das mit read? (blocking sockets vorausgesetzt)
wenn verbindung offen, dann wartet read,
wenn verbindung zu, dann returnt es 0,
richtig?
-
richtig.
Kannst auch alternativ recv() und send() verwenden
-
ich nehm besser send und recv, weil read/write so nicht unter windoof geht (keine descriptors sondern halt 'sockets')
danke, lösung klappt