How to test whether a host is reachable?

Chris Mellon arkanes at gmail.com
Thu Feb 22 09:36:40 EST 2007


On 2/22/07, Fabian Steiner <lists at fabis-site.net> wrote:
> Hello!
>
> As the subject says I need to test whether a host computer in our
> network is reachable or not. At the moment I simply attempt to connect
> to a given port that is open when the machine is online:
>
> [...]
> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> try:
>      sock.connect(('192.168.0.100', 80))
> except socket.error:
>      print >>sys.stderr "Server offline"
> sock.close()
> [...]
>
> Now I am wondering if there isn't any better method which would be more
> general. In fact, I think of something like a python version of ping
> which only tries to send ICMP packets. However, I don't know what the
> code has to look like then. Any ideas or suggestions?
>

This is the only reliable way of telling if you can communicate with a
service on a machine. A ping will tell you if it's connected to the
network, but not if it is actually providing any services.

If you really want a ping, the common way is to just execute the systems ping.



More information about the Python-list mailing list