मैं एक पर्ल स्क्रिप्ट को अपडेट करने की कोशिश कर रहा हूं, जो आइडेंटी के रूप में काम करती है, एक 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 identn"; }
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: $identn";
while ($client=$socket->accept()) {
my $host=$client->peerhost();
print "connection: ", $host . "n";
my $data = <$client>;
if ($data) {
print "$host recv: $datan";
$data =~ s/^s+//;
$data =~ s/s+$//;
$ident =~ s/^s+//;
$ident =~ s/s+$//;
print $client "$data : USERID : UNIX : $identn";
close $client;
}
}
undef $client if $client;
परिणाम बिल्कुल भी संतोषजनक नहीं हैं:
netstat -alpn | जीआरपी पर्ल
tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN
उत्तर:
जवाब के लिए 2 № 1निम्नलिखित काम करने लगता है:
$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