如何在运行时动态的改变 TIdTCPServer 的端口 ( 积分: 50 )

  • 主题发起人 主题发起人 aiyiersan
  • 开始时间 开始时间
A

aiyiersan

Unregistered / Unconfirmed
GUEST, unregistred user!
我在做测试时,在一个窗体上面放了一个 TIdTCPClient和一个 TIdTCPServer。
这样他即可以做服务器,有可以做客户端,但是在同一台机器运行时就要发生冲突。
我就想在程序启动是判断该端口是否被站用,代码如下
procedure TForm1.FormCreate(Sender: TObject);
begin
Fport:=524;
while not server.Active do
begin
try
server.DefaultPort:=Fport;
server.Active:=True;
except
Fport:=Fport+1;
server.Active:=False;
end;
end;
end;
这样的结果是,如果有一相同程序在运行,程序一直在循环。
各位大侠,给出个主意啊!
 
建一个指定端口的socket,调用bind,如果返回SOCKET_ERROR就可能是了,然后调用WSAGetLastError如果返回WSAEADDRINUSE就可以肯定了。
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Fport:=524;
while not server.Active do
begin
try
server.DefaultPort:=Fport;
server.Active:=True;
[red]Break;[/red]
except
Fport:=Fport+1;
end;
end;
end;
改成这样试试
 
后退
顶部