Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Indy 10.6.5040 TCPServer Serverschliessen und Client Verbindungen trennen

  Alt 25. Dez 2013, 18:20
Die Indys haben ja auch im Client ein OnDisconnect, das wurde in egal welchem Versuch Serverseitig die Verbindung zu trennen nie aufgerufen.
TIdTCPConnection (die Vorfahrklasse von TIdCustomTCPClient) hat eine Methode OnDisconnected (nicht OnDisconnect).

Diese wird aus der Methode TIdTCPConnection.Disconnect aufgerufen, also nachdem der Client die Verbindung zum Server geschlossen hat. Mit dem serverseitigen Schliessen hat diese Methode nichts zu tun.

Auf der Client-Seite kann nur mit einem kontinuierlichen Read auf der Connection das serverseitige Schliessen der Verbindung erkannt werden. Im Fall der Indy TIdTCPClient Klasse würde clientseitig eine Exception (EIdConnClosedGracefully oder ein EIdSocketError) ausgelöst, wenn das Read vom Socket nicht weiter möglich ist. Die Behandlung einer "Read Timeout" Exception muss bei diesem Verfahren auf der Clientseite u.U. auch vorgesehen werden, diese bedeutet aber nur, dass keine Daten empfangen wurden, und nicht, dass der Server die Verbindung getrennt hat.
Michael Justin
  Mit Zitat antworten Zitat