Ich habe ein Client-Skript, TCP-Paket auf IPv4-Adresse zu empfangen. Jetzt brauche ich das Skript erhält TCP-Paket auf IPv6-Adresse. Da ich nicht viel über Perl-Socket weiß, können Sie mir helfen, es zu ändern?Wie das Skript funktioniert auf IPv6-Adresse
use Socket;
use IO::Handle;
use constant MY_ECHO_PORT => 9067;
$ENV{'PATH'} = "$ENV{'PATH'}:./";
my ($bytes_out,$bytes_in) = (0,0);
my $dt;
my $port = shift || MY_ECHO_PORT;
my $protocol = getprotobyname('tcp');
local *SESSION;
local *SOCK;
$SIG{'INT'} = sub {
close(SESSION) if SESSION;
shutdown(SOCK,2) if SOCK;
close(SOCK) if SOCK;
print STDERR "Mlease agent stopped\n";
exit 0;
};
socket(SOCK, AF_INET, SOCK_STREAM, $protocol) or
die "socket() failed: $!";
setsockopt(SOCK,SOL_SOCKET,SO_REUSEADDR,1) or
die "Can't set SO_REUSEADDR: $!";
my $my_addr = sockaddr_in($port,INADDR_ANY);
bind(SOCK,$my_addr) or
die "bind() failed: $!";
listen(SOCK,SOMAXCONN) or
die "listen() failed: $!";
print "Mlease agent started on port $port...\n";
[IO :: Socket :: IP] (https://metacpan.org/pod/IO::Socket::IP) unterstützt sowohl IPv4 als auch IPv6 – palik
Ich habe IO :: Socket :: IP verwendet, aber es ist immer noch auf IPv4 zu hören. Ich denke, müssen etwas ändern – zalman
Werfen Sie einen Blick auf [Was soll ich tun, wenn jemand meine Frage beantwortet?] (Http://Stackoverflow.com/help/someone-answers) – zdim