Socket client server verbindung beenden
-
Hallo zusammen,
ich habe ein Problem mit dem Beenden meiner Verbindung (socket tcp) zwischen meinem Client und meinem Server. Der Server verwaltet einen Filedeskritor und einen Socket. Mit select() wird nachgeschaut, ob es auf einem von beiden etwas zu lesen gibt. Gibt es etwas zu lesen auf dem Socket (client hat etwas geschickt) wird dies ausgelesen und in den Filedeskriptor geschrieben. Gibt es etwas aus dem Filedeskriptor zu lesen wird es an den Socket und somit an den Client geschickt.Der Server wartet also an select() bis es etwas zu tun gibt. Ich suche jetzt eine Möglichkeit den Server auf das Schliessen des Sockets (Client schliesst das Socket) reagieren zu lassen.
Hat jemand dazu eine gute Idee, oder vielleicht sogar einen Codeschnipsel als Beispeil?Dank im voraus und
Gruss Amtrak
-
Mittels "poll" kann man dies für einen fd überprüfen, indem man ihn auf event "POLLERR" abfragt. Vermutlich wird es auch mit "select" gehen, indem Du den fd in dem letzten Parameter (exceptfd) zusätzlich aufnimmst.
Ansonsten wird soweit ich mich erinnere auch ein Signal aufgerufen, welches Du dazu verwenden könntest, um ein Zeichen in eine Pipe zu schreiben und select auch auch auf ein Zeichen in dieser Pipe wartet. Wenn Dir select nun signalisiert, dass ein Zeichen in der Pipe angekommen ist, könntest Du per poll alle anderen fd's abfragen.
Aber erst einmal würde ich natürlich schauen, ab Dir der letzte Parameter in select weiter hilft.