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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#!/usr/bin/perl -w
use strict;
use Test::More tests => 4;
use IO::Socket::IP;
use IO::Socket::INET;
use Socket qw( SOCK_STREAM unpack_sockaddr_in getaddrinfo );
{
my $testserver = IO::Socket::INET->new(
Listen => 1,
LocalHost => "127.0.0.1",
Type => SOCK_STREAM,
) or die "Cannot listen on PF_INET - $@";
my ( $err, @peeraddrinfo ) = getaddrinfo( "127.0.0.1", $testserver->sockport, { socktype => SOCK_STREAM } );
$err and die "Cannot getaddrinfo 127.0.0.1 - $err";
my $socket = IO::Socket::IP->new(
PeerAddrInfo => \@peeraddrinfo,
);
ok( defined $socket, 'IO::Socket::IP->new( PeerAddrInfo => ... ) constructs a new socket' ) or
diag( " error was $@" );
is_deeply( [ unpack_sockaddr_in $socket->peername ],
[ unpack_sockaddr_in $testserver->sockname ],
'$socket->peername' );
}
{
my ( $err, @localaddrinfo ) = getaddrinfo( "127.0.0.1", 0, { socktype => SOCK_STREAM } );
$err and die "Cannot getaddrinfo 127.0.0.1 - $err";
my $socket = IO::Socket::IP->new(
Listen => 1,
LocalAddrInfo => \@localaddrinfo,
);
ok( defined $socket, 'IO::Socket::IP->new( LocalAddrInfo => ... ) constructs a new socket' ) or
diag( " error was $@" );
my $testclient = IO::Socket::INET->new(
PeerHost => "127.0.0.1",
PeerPort => $socket->sockport,
) or die "Cannot connect to localhost - $@";
is_deeply( [ unpack_sockaddr_in $socket->sockname ],
[ unpack_sockaddr_in $testclient->peername ],
'$socket->sockname' );
}
|