Hallo flossinger,
das mit dem Bug habe ich unter:
http://www.delphi-forum.de/topic_TSe...ite_64541.html
gelesen, aber nicht weiter verfolgt.
Folgende Reihenfolge habe ich beim Ausprobieren erhalten:
Code:
Server.OnGetSocket //1.Verbindungswunsch vom Client
Server.OnClientConnect //2.Client hat sich verbundent, Socket ab hier verfügbar
Server.OnAccept //3.Verbindung vom Server akzeptiert
Server.OnClientRead //4.Daten wurden empfangen, können gelesen werden
Server.OnClientWrite //5.Socket ist beschreibbar, kann auch mal vor Read aufkommen!
Server.OnClientDisconnect //Verbindung zum Client beendet, tritt nach Aufruf von Server.close; auf
Server.OnClientError //das konnte ich nicht testen
Im OnClientConnect erzeuge ich mir ein Thread, dieser wartet auf Accept, Read, Write wobei bei read die übergebenen Daten eingelesen werden. Danach sende ich meine Antwort zurück. Das klappt auch alles, Theoretisch könnte ich auf ClientWrite und OnAccept verzichten und nur auf OnClientRead warten das die Verbindung ja akzeptiert sein muß um Daten zu erhalten.
Wobei im OnAccept bestimmt selber ernscheinden soll ob ich den Clienten haben will oder nicht.?.
Womit jetzt noch Probleme habe ist wenn den Client sich disconnect (z.B. wenn ich beim Laden im Webbrowser auf Stop oder Reload klicke). Bis mir was besseres über den Weg läuft fange ich die entstehende
Exception über AppException ("TServerClientWinSocket Asynchroner Socket-Fehler 10053") ab und lösche meinen Thread und den Socket. Schade ist das hier nicht ein OnClientDisconnect oder OnClientError auftritt....
Ich lese gerade das es noch OnErrorEvent und OnSocketEvent gibt, vielleicht hilft mir das weiter.
Ein Gruß
LM