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.