use warnings;
use IO::Socket::INET6;
use Time::HiRes qw(sleep);
+use POSIX;
@ARGV==5 or die "$0 <hostname> <port> <string> <timeout> <tries>";
my($hostname,$port,$string,$timeout,$tries)=@ARGV;
-for our $try (1..$tries) {
- sub ts() {
- return localtime()." PID=$$ #$try: ";
- }
+our $try;
+sub ts() {
+ return localtime()." PID=$$ #$try: ";
+}
+for $try (1..$tries) {
warn ts()."connect($hostname,$port)...\n";
my $sock=IO::Socket::INET6->new(
"Proto" =>"tcp",
"PeerAddr"=>$hostname,
"PeerPort"=>$port,
+ "Timeout"=>$timeout,
);
if (!$sock) {
- warn ts()."connect($hostname,$port)=$!";
- sleep $timeout;
+ my $e=$!+0;
+ warn ts()."connect($hostname,$port)=$e=$!";
+ sleep $timeout if $e!=ETIMEDOUT;
next;
}
warn ts()."connect($hostname,$port): done.\n";
warn ts()."buf=<$buf>, sleep $remains";
sleep $remains or warn ts()."sleep=$!";
}
+$try=$tries;
warn ts()."FAIL\n";
print "FAIL\n";