Gast
#6742080
Hi zusammen, ich stehe gerade etwas auf dem Schlauch: Momentan arbeite ich an einem TCP-Server. Wenn der Client die Verbindung beendet und der Server danach ein Send() macht, dann stürzt der Server mit der Exception "external: SIGPIPE" ab. Das ist doof. aktuell sieht die Sende-Routine bei mir etwa so aus: a) select() auf TX-Event b) send(); Wie kann ich denn auf Server-Seite prüfen, ob der Client noch da ist? Die Idee mit dem select() auf TX hatte ich mal irgendwo gelesen, aber das funktioniert hier irgendwie nicht :( Mit einem Fehler im Return-Code könnte ich super leben, aber Absturz ist halt auf Dauer unbrauchbar... Falls es etwas hilft: Lazarus unter Linux Mint 18.3 select() und send() sind aus dem fpc-Wrapper fpselect() und fpsend(). Die sollten aber 1:1 auf die Linux-Funktionen gehen. Codeschnipsel müßte ich erst generieren (ist über ein paar Klassen in meinen eigenen Bibliotheken verteilt). Mit UDP hatte ich mit den selbst (Basis-)Klassen bislang nie Probleme, aber das liegt wahrscheinlich an der Verbindungslosigkeit Freue mich über jeden konzeptionellen Tip! :) Mir geht es hier wirklich um das Verständnis ums Konzept "Erkennen einer geschlossenen TCP-Verbindung", nicht um das Zusammenkopieren von Codeschnipseln! Danke und VG