Einzelnen Beitrag anzeigen

Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Socket Ausgangsthread, sinvoll? (Ping / Pong)

  Alt 5. Apr 2008, 14:57
hi,

bei meinem Protokoll für die Kommunikation über Sockets habe ich es so gelöst das wenn Daten vom Client zum Server gesendet werden wird erst ein Ping zum Server gesendet. Der Server antwortet mit einem Pong. Wenn der Client den Pong bekommt sendet er die Daten.
Nur leider funktioniert die umsetzung nicht wirklich.....

Daten senden (TMyClient)
Delphi-Quellcode:
  //Sende ping und warte 5 sek auf antwort
  ping := TCommandHandling.Create(cmdPing);
  s := ping.SendFrames;
  fClient.Socket.SendBuf(PChar(s)^,length(s));
  StartTime := now + 2.2*(2.2/86400.0);
  //Ping gesendet warte auf Pong
  while (not fIsPongOk) and (StartTime > now) do
  begin
    sleep(1);
    application.ProcessMessages;
  end;
  ping.Free;
Pong
Delphi-Quellcode:
procedure TMyClient.OnGetDataSocket(Socket: TCustomWinSocket;
  Cmd: TCommandHandling);
begin
  if cmd.GetCmd = cmdPong then
    fIsPongOk := true
  else
    fOnGetData(cmd);
end;
Dachte mir eventuell einen Thread zu erstellen Inbound/Outbound, oder nur eine Klasse mit einem Thread der die aufgabe Eingang/Ausgang löst. Was meint ihr?

Habe vor den Ablauf wie volgt zu lösen.....
Delphi-Quellcode:
Client Server
  Sende Ping -> ist es ein ping
                  <- sende pong
  Warte auf Pong
  sende daten ->
Müsste es mit einem Thread lösbar sein oder mit 2 (Eingang - Ausgang)?
  Mit Zitat antworten Zitat