Linux 确定TCP端口是否可用的最佳perl方法
使用perl确定tcp端口是否可用的最佳方法是什么。我想在创建网络服务之前选择一个端口。这一切都需要使用自动化来完成,并且需要为服务构建一个配置,包括服务使用范围内的可用tcp端口 审议中的可能方法:Linux 确定TCP端口是否可用的最佳perl方法,linux,perl,sockets,tcp,Linux,Perl,Sockets,Tcp,使用perl确定tcp端口是否可用的最佳方法是什么。我想在创建网络服务之前选择一个端口。这一切都需要使用自动化来完成,并且需要为服务构建一个配置,包括服务使用范围内的可用tcp端口 审议中的可能方法: IO::在候选端口上测试绑定的套接字 Net::Telnet以测试连接到候选端口 Linux::Proc::Net::TCP 最好的方法是什么?为什么?我不太喜欢测试绑定,因为它要求特权端口使用root,如果脚本出现问题,它可能会让所有测试端口及时等待。我喜欢Linux::Proc::Net::T
最好的方法是什么?为什么?我不太喜欢测试绑定,因为它要求特权端口使用root,如果脚本出现问题,它可能会让所有测试端口及时等待。我喜欢Linux::Proc::Net::TCP,因为它速度快,但不可移植。
bind
会立即明确告诉您端口是否不可用(EADDRINUSE
)。其他选择没有任何意义
由于听起来您实际上并不关心绑定的端口,因此在我看来,更好的方法是将绑定到端口0
,该端口绑定到可用端口。您可以使用
中的sockaddr\u确定套接字绑定到的端口
另一方面,如果所需端口在1..1023范围内,则只需由您为程序保留端口即可。系统不会自动为这些端口分配服务。(我不确定在Windows上是否如此。)嗯。。。为什么从未打开的端口会进入time_wait状态?这对我不起作用,因为端口必须位于分配给服务的范围内。我不能只使用下一个可用端口。该范围在1..1023以内吗?如果是这样,系统将不会自动将服务分配给这些端口,而您只需决定为您的程序保留其中一个端口。