unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, StdCtrls,idsockethandle;

type
  TForm1 
= class(TForm)
    Button1: TButton;
    IdUDPServer1: TIdUDPServer;
    procedure Button1Click(Sender: TObject);
  
private
    
{ Private declarations }
  
public
    
{ Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var ok:boolean ;
tempport:integer;
asockethandle:tidsockethandle;
begin
tempport:
=idudpserver1.DefaultPort;
repeat
try
idudpserver1.Active:
=true;
ok:
=true;
except
  on EIdCouldNotBindSocket 
do
    begin
      IdUDPServer1.Active:
=false;
      IdUDPServer1.Bindings.Clear;
      ASocketHandle:
=IdUDPServer1.Bindings.Add;
      tempport:
=tempport+1;
      ASocketHandle.Port:
=tempport ;

    end;
end;
until ok;
showmessage(inttostr(idudpserver1.Binding.Port));
end;

end.