#!/usr/bin/perl use IO::Socket; use Net::Ping; $sock = new IO::Socket::INET (LocalHost => 'xxx.xxx.xxx.xxx', LocalPort => 9321, Proto => 'tcp', Listen => 5, Reuse => 1 ); die "Socket could not be created. Reason: $!" unless $sock; $reach = Net::Ping->new($ > ? "tcp": "icmp"); (defined $reach) or die "Couldn't create Net::Ping object: $!\n"; while (1) { do a poll or select on Server socket Id which is '$sock'; whenever there is a new connection 'send_response' send_response ( $new_sock ); } sub send_response { my ( $new_sock ) = shift; if $reach->ping("$host") { print "host is reachable" } else { print "host is unreachable"; } return 1; }