Einzelnen Beitrag anzeigen

Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#2

Re: Indy: mehrere UDP-Server auf einem Port

  Alt 11. Okt 2004, 22:43
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
  Mit Zitat antworten Zitat