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