Perl 让fakeidentd.pl脚本同时在ipv4和ipv6上侦听

Perl 让fakeidentd.pl脚本同时在ipv4和ipv6上侦听,perl,Perl,我正在尝试更新一个充当ident的perl脚本,以便也在ipv6套接字上侦听 #!/usr/bin/perl use strict; use warnings; use IO::Socket; use IO::Socket::IP; my($client,$socket); if (!defined($ARGV[0])) { die "Please supply ident\n"; } my $ident=$ARGV[0]; $socket = IO::Socket::IP->new(

我正在尝试更新一个充当ident的perl脚本,以便也在ipv6套接字上侦听

#!/usr/bin/perl

use strict;
use warnings;
use IO::Socket;
use IO::Socket::IP;

my($client,$socket);
if (!defined($ARGV[0])) { die "Please supply ident\n"; }
my $ident=$ARGV[0];
$socket = IO::Socket::IP->new(
        "Domain" => "PF_INET6",
        "Proto" => "tcp",
        "LocalPort" => 113,
        Reuse => 1,
        "Listen" => 1) or die "Error: $!\n";
print "using ident: $ident\n";
while ($client=$socket->accept()) {
        my $host=$client->peerhost();
        print "connection: ", $host . "\n";
        my $data = <$client>;
        if ($data) {
                print "$host recv: $data\n";
                $data =~ s/^\s+//;
                $data =~ s/\s+$//;
                $ident =~ s/^\s+//;
                $ident =~ s/\s+$//;
                print $client "$data : USERID : UNIX : $ident\n";
                close $client;
        }
}
undef $client if $client;
#/usr/bin/perl
严格使用;
使用警告;
使用IO::Socket;
使用IO::Socket::IP;
我的($client,$socket);
如果(!defined($ARGV[0]){die“请提供标识\n”;}
my$ident=$ARGV[0];
$socket=IO::socket::IP->new(
“域”=>“PF_INET6”,
“Proto”=>“tcp”,
“本地端口”=>113,
重用=>1,
“侦听”=>1)或“死亡”错误:$!\n;
打印“使用标识:$ident\n”;
而($client=$socket->accept()){
my$host=$client->peerhost();
打印“连接:,$host.\n”;
我的$data=;
如果($数据){
打印“$host recv:$data\n”;
$data=~s/^\s+/;
$data=~s/\s+$/;
$ident=~s/^\s+/;
$ident=~s/\s+$/;
打印$client“$data:USERID:UNIX:$ident\n”;
关闭$client;
}
}
未定义$client,如果是$client;
结果一点也不令人满意:

netstat-alpn | grep perl
tcp 0.0.0.0:113 0.0.0.0:*听


以下似乎有效:

$socket = IO::Socket::IP->new(
        Domain    => PF_INET6,
        LocalHost => "::1",
        "Proto" => "tcp",
        "LocalPort" => 113,
        Reuse => 1,
        "Listen" => 1) or die "Error: $!\n";
结果:

# netstat -alpn | grep perl
tcp        0      0 ::1:113                 :::*                    LISTEN      1357/perl

以下似乎有效:

$socket = IO::Socket::IP->new(
        Domain    => PF_INET6,
        LocalHost => "::1",
        "Proto" => "tcp",
        "LocalPort" => 113,
        Reuse => 1,
        "Listen" => 1) or die "Error: $!\n";
结果:

# netstat -alpn | grep perl
tcp        0      0 ::1:113                 :::*                    LISTEN      1357/perl

这是正确的TCP60:0::1:113::*侦听7777/perl这是正确的TCP60:0::1:113::*侦听7777/perl