leider bietet tidudpserver keine Möglichkeit, um die Option SO_REUSEADDR zum richtigen Zeitpunkt (vor Bind) zu setzen (bei TIdUDPServer.Active:=true wird das vorhandene Binding zerstört, und ein neues initialisiert, wonach natürlich die Option wieder auf dem Default-Value ist).
aber "von Hand" geht's trotzdem:
Delphi-Quellcode:
Uses
idstack, idstackwindows, idsockethandle;
[...]
Var
sh : TIdSocketHandle;
B : Bool;
Buf : Array[0..127] Of Byte;
begin
GStack:=TIdStackWindows.CreateStack();
sh:=TIdSocketHandle.Create(Nil);
sh.AllocateSocket(SOCK_DGRAM);
sh.Port:=4444;
B:=True;
sh.SetSockOpt(SOL_SOCKET,SO_REUSEADDR,@B,SizeOf(Bool));
sh.Bind();
sh.Recv(Buf,SizeOf(Buf),0); // in einen Thread verpacken
end;
Gruss Basilikum