我希望我的 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 仍会显示它在线!
2 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
您知道 android 设备如何检查已连接的 wifi 是否已连接到互联网吗?是的,它只是不断地向 Google 发送消息,并希望得到预期的响应。
所以你必须做同样的事情。
添加回答
举报
0/150
提交
取消