Einzelnen Beitrag anzeigen

Jackie1983

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

Re: verbindung zum server? Client/server Sockets

  Alt 14. Jul 2008, 15:13
so weit funktioniert das es ja auch aber irgend wie auch wieder nicht
Delphi-Quellcode:
procedure TMyClient.Send(var Cmd: TCommandHandling; SendNow : Boolean; FreeCmd : Boolean);
var
  s : string;
  StartTime : double;
  cs : TCriticalSection;
begin
  if not fIsOnline then GoOnline('127.0.0.1',12345);
  application.ProcessMessages;
  cs := TCriticalSection.Create;
  cs.Enter;
  //Daten im Buffer ablegen
  fQoS.QoS_Buffer := fQoS.QoS_Buffer + cmd.SendFrames;
  //Jetzt senden oder Sammeln
  if not SendNow then
    if length(fQoS.QoS_Buffer) < fQoS.QoS_SendSize then exit;

  if not fIsOnline then exit;//wird bei OnConnect auf true gesetzt
  fPingPong.SendePing;
  StartTime := now + 2.2*(2.2/86400.0);
  //Ping gesendet warte auf Pong
  while (not fPingPong.fPong) and (StartTime > now) do
  begin
    sleep(1);
    application.ProcessMessages;
  end;
  //Ist Pong ok und zeit nicht abgelaufen, also verbunden, sende daten
  if fPingPong.fPong then
  begin
    fPingPong.fPong := false;
    //Daten senden
    s := fQoS.QoS_Buffer;
    fQoS.QoS_Buffer := '';
    fClient.Socket.SendBuf(PChar(s)^,length(s));
  end else // wenn kein pong server nicht da -> off
    if fIsOnline then
      GoOffline;
  application.ProcessMessages;
  //Freigeben
  if FreeCmd then cmd.Free;
  cs.Leave;
end;
so klappt es auch aber nicht immer wenn ich debugge und las mir "zeit" beim debuggen funktioniert es immer.....

Vielleicht findet ja jemand einen Fehler oder weis wie man es besser / eleganter lösen kann....
  Mit Zitat antworten Zitat