Einzelnen Beitrag anzeigen

Jackie1983

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

Klasse TClientSocket im Thread. Timer soll kurz warten

  Alt 30. Okt 2009, 09:47
Servus,

ich habe eine Threadklasse dort ist der Client enthalten (TClientSocket).

Die Daten zum senden werden in einer list im Timer abgearbeitet.
Wenn Daten da sind wird ein Ping gesendet.... dann 10 Sekunden warten auf Pong
Zur Zeit mache ich es mit einer schleife und warte per sleep(10) bis ich ein Pong erhalten habe.

Wenn Pong da, dann daten senden, wenn nicht verbindung trennen.
Aber wenn ich sleep im thread verwende wird ja auch die ClientSocket schlafen gelegt, nur
ich weis nicht wie ich warten kann so das der socket weiter arbeiten kann und weiter daten empfanken kann und vor allem das Pong.

Im Protokoll vom server sehe ich das er den Pong in der gleichen Sekunde schickt wie er das Ping erhalten hat.
Am Server liegt es nicht.

Mfg

//Methode 2
Was meint ihr dazu, ich glaube das ist viel einfacher
Delphi-Quellcode:
//pseudocode
ThreadClient.DatenSenden(daten)
begin
  if not ClientVerbunden then
    connect;
  
  cs.enter;
    fbuffer.add(daten);
  cs.leave;
  sendePing; //warten auf pong
end;

ThreadClient.Read;
begin
  if cmdFromServer = Pong then
  begin
    SendeDatenZumServer(fbuffer);
  end;
end;
  Mit Zitat antworten Zitat