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,那就太过分了。
技术 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,那就太过分了。