Testing for Internet Connection
Alexnb
alexnbryan at gmail.com
Tue Jul 15 12:00:35 EDT 2008
Troeger Thomas (Ext) wrote:
>
> Alex Marandon wrote:
>> Alexnb wrote:
>>> I am wondering, is there a simple way to test for Internet connection?
>>> If
>>> not, what is the hard way :p
>>
>> Trying to fetch the homepage from a few major websites (Yahoo, Google,
>> etc.)? If all of them are failing, it's very likely that the connection
>> is down. You can use urllib2 [1] to accomplish that.
>>
>> [1] <http://docs.python.org/lib/module-urllib2.html>
>
> This seems to work and is rather fast and wastes no bandwidth:
>
> ==============================================================================
> #!/usr/bin/python
>
> import socket, struct
>
> def check_host(host, port, timeout=1):
> """
> Check for connectivity to a certain host.
> """
> # assume we have no route.
> ret=False
>
> # connect to host.
> try:
> # create socket.
> sock=socket.socket()
> # create timeval structure.
> timeval=struct.pack("2I", timeout, 0)
> # set socket timeout options.
> sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVTIMEO, timeval)
> sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDTIMEO, timeval)
> # connect to host.
> sock.connect((host, port))
> # abort communications.
> sock.shutdown(SHUT_RDWR)
> # we have connectivity after all.
> ret=True
> except:
> pass
>
> # try to close socket in any case.
> try:
> sock.close()
> except:
> pass
>
> return ret
>
> # -------------------------------- main ---------------------------------
>
> if check_host("www.heise.de", 80):
> print "Horray!"
> else:
> print "We've lost headquarters!"
> ==============================================================================
>
> I hope the code is ok, but there is always something you can do better.
> Comments? :)
>
> Cheers,
> Thomas.
> --
> http://mail.python.org/mailman/listinfo/python-list
>
>
Thomas this code did not work on google.com and I also tried it with port
443
--
View this message in context: http://www.nabble.com/Testing-for-Internet-Connection-tp18460572p18468756.html
Sent from the Python - python-list mailing list archive at Nabble.com.
More information about the Python-list
mailing list