Python中缺少网络连接检查功能

时间:2015-01-18 06:54:11

标签: python urllib2

是否有任何技术原因导致Python urllib2模块没有提供内置函数来检查网络连接(计算机和路由器之间的连接)是否为本?

2 个答案:

答案 0 :(得分:1)

技术原因是该库的名称为urllib2;它是一个更高级别的库,可以处理network connectivity layer

这种较低级别的连接由操作系统提供,因此大多数语言将插入网络库以查找连接的状态。

实际上,当您建立连接时,您的应用程序,其运行时和操作系统同意执行尽力而为尝试来建立连接。

无论连接断开(在网络层),负责该连接的软件都会传播错误,最终会到达您的应用程序运行时,后者必须决定如何处理它。< / p>

它可能选择默默地承认它并重试;在内部记录并为您(开发人员)提供不同的消息;或者它可以让您直接访问低级错误代码。

简而言之,每个更高级别的库都不可能知道较低级别的连接细节。插入很多部件以使连接工作;它们都在网络模型的不同层面工作。

为了真正探索网络堆栈,您必须使用较低级别的库,例如sockets;但如果您只想解析网址,那就太过分了。

答案 1 :(得分:0)

您可以尝试访问某个网站,如果“尝试”成功,那么您可以访问路由器。可能还有其他错误代码可能更具体。

rootUrl = 'http://www.dilbert.com'
try:
    webFile = urllib2.urlopen(rootUrl)
except urllib2.HTTPError, e:
    if e.code == 404:
        sys.exit("can't find:",rootUrl)
    else:
        print e
        sys.exit(rootUrl,"other error (not 404)")