检查树莓派是否连接到互联网

我希望我的 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 仍会显示它在线!


料青山看我应如是
浏览 389回答 2
2回答

汪汪一只猫

您知道 android 设备如何检查已连接的 wifi 是否已连接到互联网吗?是的,它只是不断地向 Google 发送消息,并希望得到预期的响应。所以你必须做同样的事情。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python