Einzelnen Beitrag anzeigen

Jackie1983

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

Re: Indy, ReadBuffer <- abbrechen

  Alt 9. Mär 2008, 12:58
vielleicht hat jemand noch ein idee wie ich es anders machen kann.
Delphi-Quellcode:
//Execute vom TCPidServer
procedure TMyServer.OnExecute(AThread: TIdPeerThread);
begin
  //#Header
  AThread.Connection.ReadBuffer(header,sizeof(header));
  //#Daten
  ...
end;
Daten vom Server an alle Clients senden
Delphi-Quellcode:
//Befehl senden
procedure TfrmServerMain.cmdSendDataClick(Sender: TObject);
var
  header : TDTSHeader;
  daten : TDTSDaten;
  checksum:TDTSChecksum;
  s : string;
  i : integer;
begin
  //Header füllen
  ...
  for i:=0 to fServer.Clients.Count-1 do
  begin
    (fServer.Clients.Objects[i] as TIdPeerThread).Connection.WriteBuffer(header,sizeof(TMyHeader));
    (fServer.Clients.Objects[i] as TIdPeerThread).Connection.WriteBuffer(daten,sizeof(TDaten));
    //Auf antwort warten
    s := (fServer.Clients.Objects[i] as TIdPeerThread).Connection.Readln;
    log.Lines.add((fServer.Clients.Objects[i] as TIdPeerThread).Connection.Socket.Binding.IP+' '+s);
  end;
end;
wenn ein client sich verbindet wird die execute aufgerufen, deswegen wartet er bei ReadBuffer(header...

wenn ich jetzt einen befehl senden möchte warte ich auch eine bestätigung, aber er wartet ja in der Execute methode......

Vielleicht hat jemand noch eine andere idee.
  Mit Zitat antworten Zitat