如何找到一个当前未被使用的TCP端口? ( 积分: 100 )

  • 主题发起人 主题发起人 farlook
  • 开始时间 开始时间
F

farlook

Unregistered / Unconfirmed
GUEST, unregistred user!
要做一个类似QQ聊天的东东,但是对TcpServer端的监听端口现在只能在配置文件里写死。
请教各位,是否有办法从当前的系统中随机找出一个未被使用的端口?

多谢!

逐个端口去连接的方法就免了,这个方法太笨了,另外也没效率。
 
要做一个类似QQ聊天的东东,但是对TcpServer端的监听端口现在只能在配置文件里写死。
请教各位,是否有办法从当前的系统中随机找出一个未被使用的端口?

多谢!

逐个端口去连接的方法就免了,这个方法太笨了,另外也没效率。
 
呵呵,找到方法了。用Indy控件。端口设置为0,然后active。
然后在到帮定的socket中去找当前使用的端口。
就可以了。
原来这么简单。
测试代码通过,每次会随机的取一个空闲端口。
 
随机端口的话,你的客户端怎么知道连那个端口?
 
那看来楼主是想把端口随机到一个范围里,就像bt
 
只要不指定port就都是随机分配的
服务器端还是应该绑定比较好吧,否则你客户端连上来就麻烦点了
 
放到一个范围的话,每次客户端上来还要扫描一遍端口?
这个和bt不一样,bt的端口信息是通过一个服务器转发的。
 
呵呵,我也是通过一个服务器转发的。

谢谢大家的讨论。
给 islet8 和 satanmonkey 各加50分。
 
咦,好像加分没起作用???
 
你给分没成功,重新给啊。
 
随机分配一个端口后,再打开,如果该端口被占用就再分,再打开,直到打开为止。
 
楼主加分得记得选那个加分给多人的单选框阿[8D]
 
我这儿又有一个类似问题:

如何判断一个给定的端口目前已经被占用?谢谢指教!
 
to arhaha,
如果bind失败(返回SOCKET_ERROR)则通过WSAGetLastError来判断是不是WSAEINVAL或WSAEADDRINUSE
 
呵呵 楼主 分呢[8D]
 
对不起,现在才给分。万分抱歉!
 

Similar threads

S
回复
0
查看
829
SUNSTONE的Delphi笔记
S
S
回复
0
查看
780
SUNSTONE的Delphi笔记
S
后退
顶部