Einzelnen Beitrag anzeigen

loetmann

Registriert seit: 22. Dez 2003
Ort: Rostock
33 Beiträge
 
Delphi 3 Standard
 
#5

Re: TServerSocket Reihenfolg OnClientRead vor/nach OnClientW

  Alt 19. Sep 2006, 23:54
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
  Mit Zitat antworten Zitat