繁体   English   中英

确定TCP端口是否可用的最佳perl方法

[英]Best perl method to determine if a TCP port is available

使用perl确定tcp端口是否可用的最佳方法是什么。 我想在创建网络服务之前选择一个端口。 这是使用自动化完成的,并且要求是为服务构建配置,包括服务使用的范围内的可用tcp端口。

正在考虑的可能方法:

  1. IO :: Socket测试候选端口上的绑定。
  2. Net :: Telnet测试连接候选端口
  3. Linux的:: PROC ::网:: TCP

什么是最好的方法,为什么? 我不太喜欢测试绑定,因为它需要root用于特权端口,如果脚本出现问题,它可能会将所有测试端口留在time_wait中。 我喜欢Linux :: Proc :: Net :: TCP,因为它速度快但不便携。

bind将立即并具体告诉您端口是否不可用( EADDRINUSE )。 其他选择没有任何意义。

因为听起来你实际上并不关心你绑定的端口,在我看来,更好的方法是bind到端口0 ,它绑定到可用端口。 您可以使用sockaddr_in确定套接字绑定到的端口。

另一方面,如果所需的端口在1..1023之内,那么您只需为您的程序保留端口即可。 系统不会自动为这些端口分配服务。 (我不确定在Windows上是否属实。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM