wie feststelen ob nen socket deskriptor noch gueltig ist?
-
hallo,
sagen wir ich hab nen prozess der sendet und der empfaengt. wenn der sendende den socket schliesst ist das kein problem: die funktion die beim empfaenger empfaengt liefert -1 o. 0 zurueck und man weiss bescheid
was ist aber nun wenn der emfpaenger die schliessung des sockets einleitet? der sendende sendet immer weiter auf den socket, bis bei mir alle prozesse mit ner "broken pipe" abschmieren. aber weder liefert send nen fehler zurueck, noch veraendert sich der wert des deskriptor.
wie kann der sendende festellen ob die verbindung ueberhaupt noch besteht?
danke
-
sagen wir ich hab nen prozess der sendet und der empfaengt.
damit meine ich einen prozess der sendet und einen prozess der empfaengt
-
Ich würde einfach Überprüfen, ob send fehlgeschlagen ist:
if(send(_socket, buffer, strlen(buffer), 0) == -1) { //Fehler }
Ich hoffe, das ich deine Frage richtig verstanden habe.
-
feigling schrieb:
Ich würde einfach Überprüfen, ob send fehlgeschlagen ist:
if(send(_socket, buffer, strlen(buffer), 0) == -1) { //Fehler }
Ich hoffe, das ich deine Frage richtig verstanden habe.
moin, hatte ja geschrieben
aber weder liefert send nen fehler zurueck,
send liefert ja kein fehler zurueck
-
teste doch per select() ob es ne exception gab
-
Entweder du fängst SIGPIPE ab, oder du setzt bei send das Flag MSG_NOSIGNAL, dann bekommst du statt dem Signal ein EPIPE zurück.
-
wieder was gelernt; geht wunderbar!
vielen dank