delphi 如何随机获取一个未占用的端口?谢谢
解决方案 »
- 关于cxGrid 合并单元格求和问题
- quickreport报表问题
- 怎样才能知道一个控件是在运行时的加载还是设计时的加载?
- 网页服务(如IIS)是怎做的?
- InstallShield:如何动态设置自定义对话框中的Button ,Edit元件的Enable状态?
- 这样的应用能不能用多线程?
- TDataSet.GetBookmark的作用是什么?
- 各位进来看看,关于DBExpress组件的问题?????????????????
- 抓屏的一个小问题
- 中秋大酬宾 积分大放送!
- 用过RzGruopBar的朋友帮个忙,怎样在RzGroup上显示图标或是图片(有图),谢谢!
- 将数据表字段内容显示至combobox中的问题,再提问
将Idtcpserver的defaultport设置为0,当active为true时,查看Idtcpserver.defaultport,显示为0,
而他想知道的却是那个随机分配给Idtcpserver的端口是多少?
而这个也是我想知道的!!谢谢
winsock;var
wsadat: TWSAData;
sd: TSocket;
sa: TSockAddr;
sain: TSockAddrIn;
sain_len: Integer;
begin
WSAStartup(makeword(1,0),wsadat);
try
sd :=socket( AF_INET
, SOCK_STREAM
, IPPROTO_IP
);
fillchar(sa, sizeof(TSockAddr), 0);
sa.sin_family := AF_INET;
sa.sin_port := 0;//0表示随机分配端口
sa.sin_addr.S_addr := inet_addr('0.0.0.0'); bind(sd,sa,sizeof(sa));
sain_len := sizeof(sain);
getsockname(sd,sain, sain_len);
ShowMessage(IntToStr(htons(sain.sin_port)));//bind之后被随机分配到的端口
finally
WSACleanup;
end;end;
procedure TForm1.IdTCPServer1AfterBind(Sender: TObject);
var
wsadat: TWSAData;
sd: TSocket;
sain: TSockAddrIn;
sain_len: Integer;
begin
WSAStartup(makeword(1,0),wsadat);
try
sd :=IdTCPServer1.Bindings.Items[0].Handle;
sain_len := sizeof(sain);
getsockname(sd,sain, sain_len);
ShowMessage(IntToStr(htons(sain.sin_port)));
finally
WSACleanup;
end;
end;
procedure TForm1.IdTCPServer1AfterBind(Sender: TObject);
begin
ShowMessage(IntToStr(IdTCPServer1.Bindings.Items[0].Port));
end;