Danke. Genau das hat mir gefehlt. Funktioniert, ich werde es aber noch länger testen müssen.
Für die Nachwelt:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
Client : TIdUDPClient;
lenUDP : integer;
startTime : Cardinal;
begin
Memo1.Lines.Add('start');
Client := TIdUDPClient.Create(nil);
try
Client.Host := '192.168.178.255';
Client.Port := 22004;
Client.BroadcastEnabled := True;
Client.ReceiveTimeout := 3000;
Client.Send('PING');
startTime := GetTickCount;
SetLength(myBuf, Client.BufferSize);
while (GetTickCount - startTime) < 3500 do begin
lenUDP := Client.ReceiveBuffer(myBuf, 10);
if lenUDP > 0 then begin
Memo1.Lines.Add(inttostr(lenUDP));
SetLength(myBuf, lenUDP);
Memo1.Lines.Add(bytestostring(mybuf));
end;
end;
finally
Memo1.Lines.Add('end');
Client.Free;
end;
end;