gpt4 book ai didi

perl 套接字 : increment port if in use

转载 作者:行者123 更新时间:2023-12-04 23:40:35 25 4
gpt4 key购买 nike

我有以下代码:

use IO::Socket::INET;
use Sys::Hostname;
use Socket;


my($addr)=inet_ntoa((gethostbyname(hostname))[4]);

my $port_to_use = 7777;

my $socket = new IO::Socket::INET (
LocalHost => $addr,
LocalPort => $port_to_use,
Proto => 'tcp',
Listen => 5,
Reuse => 1
);
die "cannot create socket $!\n" unless $socket;
my $client_socket = $socket->accept();

如果我在一个屏幕中启动它并在另一个屏幕中启动另一个,我会收到一个错误:
cannot create socket Address already in use

我不想死,而是尝试使用不同的端口(增加 1),直到找到要使用的端口。

我尝试转换 die线与 eval但我没能捕获它

有什么建议?

最佳答案

使用循环:

use IO::Socket::INET;
use Sys::Hostname;
use Socket;

my($addr)=inet_ntoa((gethostbyname(hostname))[4]);

my $port_to_use = 7776;
my $fail =1;
my $socket;

while ($fail == 1){
$port_to_use++;
$fail = 0;
warn $port_to_use;
$socket = IO::Socket::INET->new (
LocalHost => $addr,
LocalPort => $port_to_use,
Proto => 'tcp',
Listen => 5,
Reuse => 0
) or $fail =1;
}
warn $socket->accept();

关于perl 套接字 : increment port if in use,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38606537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com