如何判断计算机是否连接到互联网?

9
如何在Python中判断计算机是否已连接到互联网?
2个回答

16
如果您使用python2.6,您可以设置超时。否则,连接可能会长时间阻塞。
try:
    urllib2.urlopen("http://example.com", timeout=2)
except urllib2.URLError:
    # There is no connection

1
超时加1。正如Gamecat所说的那样,这也可能意味着example.com无法访问 :-) - Vinay Sajip
11
@Vinay,你说得对。也许他应该尝试一下google.com。如果谷歌也崩了,那我猜就是没有互联网了;) - Nadia Alramli
1
你也可以使用import socket; socket.setdefaulttimeout(<秒数>)在2.5中设置超时。 - tgray

7

尝试

import urllib
file = urllib.urlopen("http://stackoverflow.com/")
html = file.read()

尝试执行该代码并查看其是否有效,或者是否会抛出异常。即使您不使用确切的代码,您也应该理解其思想。


2
哈哈,只有当 Stack Overflow 宕机时才会给出错误的负面结果;-)。最好检查几个网站,并假设至少有一个处于连接状态。 - Toon Krijthe
这只是一个例子 - 你可以使用任何网站! - Vinay Sajip
如果代理服务器正在运行,它也可能会失败。 - Nick Dandoulakis
我认为你的意思是“代理服务器已配置但未运行”。 - Vinay Sajip
很多棘手的故障模式。我知道一个环境,会弹出一个对话框警告你连接尝试已被记录,请输入用户名和密码来连接stackoverflow.com。我认为那是一个系统模态的对话框。 - MSalters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接