Thread dual stack modell
(12 answers)
Opened by enzo at 2011-07-16 16:24
Nun, du musst auf den beiden unterschiedlichen Adressen ::1 für IPv6 und 127.0.0.1 für IPv4 lauschen:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/usr/bin/perl use 5.010; use strict; use warnings; use IO::Socket::INET6; my $pid = fork; die "error: cannot fork!\n" unless defined $pid; # edit my $server = IO::Socket::INET6->new( LocalAddr => $pid ? '127.0.0.1' : '::1', LocalPort => 20_000, Listen => 5, Proto => 'tcp', ReuseAddr => 1, ) or die "error creating socket: $@\n"; while (my $client = $server->accept) { chomp(my $request = <$client>); if ($request =~ /^quit|exit|bye/) { print $client "exiting\n"; close $client; exit; # es wird nur der beendet, mit dem verbunden wurde. nicht beide } print $client (scalar reverse $request), "\n"; close $client; } Und man kann es wohl auch noch so machen (wie der sshd in deinem Beispiel): Code (perl): (dl
)
1 2 3 4 5 6 7 my $server = IO::Socket::INET6->new( LocalAddr => '::', # <-- LocalPort => 20_000, Listen => 5, Proto => 'tcp', ReuseAddr => 1, ) or die "error creating socket: $@\n"; Hat das eigentlich irgendwelche Nachteile? MfG Last edited: 2011-07-17 14:01:34 +0200 (CEST) perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
|