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;