sub port_not_listening { # UNTESTED my $timeout = 10; my ($remote, $port) = split(/:/, $_[0]); $iaddr = inet_aton($remote) or return 1; $paddr = sockaddr_in($port, $iaddr); $proto = getprotobyname('tcp'); # X uses tcp, right? socket(SOCK, PF_INET, SOCK_STREAM, $proto) or die "socket: $!"; eval { local $SIG{ALRM} = sub { die "connection timeout\n" }; alarm $timeout; connect(SOCK, $paddr) or die "$! for $remote\n"; alarm 0; }; return 1 if ( $@ ); return 0; }