use strict; use warnings; use IO::Socket::INET; my $srv = IO::Socket::INET->new( LocalAddr => '127.0.0.1', LocalPort => 7777, ReuseAddr => 1, Listen => 1, ) or die $!; my $sock = IO::Socket::INET->new( PeerAddr => '127.0.0.1', PeerPort => 7777, ) or die $!; my $cli = $srv->accept or die $!; my $sock2 = IO::Socket::INET->new( PeerAddr => '127.0.0.1', PeerPort => 7777, ) or die $!; my $cli2 = $srv->accept or die $!; local $SIG{ALRM} = sub { $sock->send( "hi\n", 0 ); }; alarm 2; my $res; use Data::Dumper; $res = $sock2->recv( my $buf, 1024 ) or die Dumper [ $res, $!, 0 + $!, ]; __END__ $VAR1 = [ undef, '', '0' ];