make testsuite somewhat location independent
[p5sagit/p5-mst-13.2.git] / t / lib / io_udp.t
CommitLineData
61f2b451 1#!./perl
2
3BEGIN {
7a4c00b4 4 unless(grep /blib/, @INC) {
5 chdir 't' if -d 't';
93430cb4 6 unshift @INC, '../lib' if -d '../lib';
7a4c00b4 7 }
8}
9
10use Config;
11
12BEGIN {
13 if(-d "lib" && -f "TEST") {
14 if ( ($Config{'extensions'} !~ /\bSocket\b/ ||
15 $Config{'extensions'} !~ /\bIO\b/ ||
16 $^O eq 'os2') &&
17 !(($^O eq 'VMS') && $Config{d_socket})) {
18 print "1..0\n";
19 exit 0;
20 }
61f2b451 21 }
22}
23
cf7fe8a2 24sub compare_addr {
25 my $a = shift;
26 my $b = shift;
27 my @a = unpack_sockaddr_in($a);
28 my @b = unpack_sockaddr_in($b);
29 "$a[0]$a[1]" eq "$b[0]$b[1]";
30}
31
61f2b451 32$| = 1;
cf7fe8a2 33print "1..7\n";
61f2b451 34
35use Socket;
36use IO::Socket qw(AF_INET SOCK_DGRAM INADDR_ANY);
37
68820cec 38 # This can fail if localhost is undefined or the
39 # special 'loopback' address 127.0.0.1 is not configured
40 # on your system. (/etc/rc.config.d/netconfig on HP-UX.)
9b599b2a 41 # As a shortcut (not recommended) you could change 'localhost'
42 # here to be the name of this machine eg 'myhost.mycompany.com'.
68820cec 43
9b599b2a 44$udpa = IO::Socket::INET->new(Proto => 'udp', LocalAddr => 'localhost')
45 or die "$! (maybe your system does not have the 'localhost' address defined)";
cf7fe8a2 46
47print "ok 1\n";
48
9b599b2a 49$udpb = IO::Socket::INET->new(Proto => 'udp', LocalAddr => 'localhost')
50 or die "$! (maybe your system does not have the 'localhost' address defined)";
61f2b451 51
cf7fe8a2 52print "ok 2\n";
53
54$udpa->send("ok 4\n",0,$udpb->sockname);
61f2b451 55
cf7fe8a2 56print "not " unless compare_addr($udpa->peername,$udpb->sockname);
57print "ok 3\n";
58
59my $where = $udpb->recv($buf="",5);
61f2b451 60print $buf;
cf7fe8a2 61
62my @xtra = ();
63
64unless(compare_addr($where,$udpa->sockname)) {
65 print "not ";
66 @xtra = (0,$udpa->sockname);
67}
68print "ok 5\n";
69
70$udpb->send("ok 6\n",@xtra);
61f2b451 71$udpa->recv($buf="",5);
72print $buf;
cf7fe8a2 73
74print "not " if $udpa->connected;
75print "ok 7\n";