http://www.cnblogs.com/goodloop/archive/2004/11/11/62825.html
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.
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.
此博客给出一段Delphi代码,展示了在Windows环境下,通过TForm1类中的按钮点击事件,实现IdUDPServer端口绑定的过程。若绑定失败,会不断尝试新端口,直至成功并显示绑定端口号。

9243

被折叠的 条评论
为什么被折叠?



