我希望我的 Python 脚本检查它是否在线。在 Stack Overflow 上找到了很多答案,但由于一些奇怪的原因都失败了。
场景:Raspberry Pi 3b+ 通过 Wifi 连接到我的路由器。那个路由器通过它的电缆连接到互联网
我想确定 Raspberry 是否有互联网连接,以便在需要时更改它的数据源。在这里搜索了一天后,我发现大多数解决方案都使用套接字,对于更好的解决方案和最坏的解决方案(仍然试图查看它是否有任何改变,但没有)urllib.urlopen。
这是我的尝试:
def checkOnlineState(self, addr='http://www.google.com'):
try:
urllib2.urlopen(addr, timeout=2)
if not self._onlineMode:
print('Internet connection is back!')
self._onlineMode = True
return
except:
pass
if self._onlineMode:
print('I lost internet connection')
self._onlineMode = False
我也尝试过使用套接字,所以我使用了 urllib2.urlopen 而不是
socket.create_connection((addr, 80), timeout=2)
要么
socket.create_connection(('8.8.8.8', 0), timeout=2)
无论我做什么,除了输入格式错误的 ip 或 url,都说我在线。我怎么知道?好吧,checkOnlineState 循环运行,如果我断开网线,Raspberry 仍会显示它在线!
汪汪一只猫
相关分类