Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 确定TCP端口是否可用的最佳perl方法_Linux_Perl_Sockets_Tcp - Fatal编程技术网

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

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

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

审议中的可能方法:

  • IO::在候选端口上测试绑定的套接字
  • Net::Telnet以测试连接到候选端口
  • Linux::Proc::Net::TCP

  • 最好的方法是什么?为什么?我不太喜欢测试绑定,因为它要求特权端口使用root,如果脚本出现问题,它可能会让所有测试端口及时等待。我喜欢Linux::Proc::Net::TCP,因为它速度快,但不可移植。

    bind
    会立即明确告诉您端口是否不可用(
    EADDRINUSE
    )。其他选择没有任何意义

    由于听起来您实际上并不关心绑定的端口,因此在我看来,更好的方法是将
    绑定到端口
    0
    ,该端口绑定到可用端口。您可以使用
    中的
    sockaddr\u确定套接字绑定到的端口


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

    嗯。。。为什么从未打开的端口会进入time_wait状态?这对我不起作用,因为端口必须位于分配给服务的范围内。我不能只使用下一个可用端口。该范围在1..1023以内吗?如果是这样,系统将不会自动将服务分配给这些端口,而您只需决定为您的程序保留其中一个端口。