Der Server versucht etwas zu senden (IOHandler.Writeln('CLOSE_REQUEST@ ')
Über diesen Punkt kommt er aber ohne Probleme hinweg.
Ok, das Senden an den Socket funktioniert - das ist normal, auch wenn die Gegenseite nicht zuhört.
und das:
Zitat:
Anders ist es allerdings, wenn der PDA beim Beenden des Servers nicht mehr erreichbar ist. Dann versucht der Server die Verbindung zu beenden, bleibt dabei aber hängen.
verstehe ich als ob nach dem obigen "Writeln" noch etwas vom Server gemacht wird, zum Beispiel auf die Antwort des Clients auf das 'CLOSE_REQUEST@' zu warten. Und das kann natürlich nicht mehr erfolgreich sein wenn der Client nicht da ist. In diesem Fall sollte der Server die dann auftretende
Exception (vermutlich ReadTimeOut) eventuell nicht mehr behandeln und
Indy automatisch den Thread beenden lassen, wenn ich mich richtig erinnere.
Beim IOHandler.Read kann ein TimeOut direkt als Parameter angegeben werden. Der Default ist relativ lange, was wie ein Hänger aussehen kann.
(Send-Timeouts sind plattformspezifisch, nicht als Parameter oder Properties, konfigurierbar und hier anscheinend nicht das Problem)
Hope this helps,