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

Lack of Network Connection Checker Function in Python

技术 Python urllib2 模块没有提供检查网络连接(计算机之间的连接和路由器)存在吗?

您可以尝试访问一些网站,如果"try"成功,您就可以访问路由器了。可能还有其他更具体的错误代码。

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)")

技术原因是库的名字是urllib2;它是一个更高级别的库,那些将处理 network connectivity layer.

的库

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

实际上发生的事情是,当您建立 连接时,您的应用程序、它的运行时和操作系统同意进行尽力而为的尝试 建立连接。

只要连接中断(在网络层),负责的软件就会传播错误并最终到达您的 应用程序运行时,它必须决定要做什么用它来做。

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

简而言之,让每个更高级别的库都知道更低级别的连接细节是不切实际的。有很多零件可以插在一起以进行连接;他们都在网络模型的不同层工作。

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