乐闻世界logo
搜索文章和话题

如何在 Python 中查看是否有可用且活动的网络连接?

1 个月前提问
1 个月前修改
浏览次数17

1个答案

1

在Python中,要检查设备是否具有可用且活动的网络连接,可以使用多种方法,这里我会介绍两种常用的方法:

方法一:使用socket

可以尝试使用socket库建立一个连接,例如连接到一个常用的地址(比如谷歌的主页)。如果连接成功,则说明有活动的网络连接。

python
import socket def check_network_connection(host="8.8.8.8", port=53, timeout=3): """ 检查网络是否连接 :param host: 连接的远端IP地址,默认是谷歌的DNS服务器 :param port: 端口号,默认为DNS服务的端口号 :param timeout: 连接超时时间 :return: 布尔值,如果连接成功返回True,否则返回False """ try: socket.setdefaulttimeout(timeout) socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port)) return True except socket.error as ex: print(f"连接错误: {ex}") return False # 示例使用 if check_network_connection(): print("网络连接正常!") else: print("无网络连接。")

方法二:使用requests

另一种方法是使用requests库尝试访问一个网站(例如 www.google.com)。如果请求成功,则网络连接正常。

python
import requests def check_internet(url='http://www.google.com', timeout=5): """ 通过发送HTTP请求来检查是否有网络连接 :param url: 测试连接的URL,默认是Google主页 :param timeout: 请求的超时时间 :return: 布尔值,如果请求成功返回True,否则返回False """ try: response = requests.get(url, timeout=timeout) # 检查HTTP响应状态码是否为200 return response.status_code == 200 except requests.ConnectionError: print("无法连接到互联网") return False except requests.Timeout: print("连接超时") return False except requests.RequestException as e: print(f"请求出错:{e}") return False # 示例使用 if check_internet(): print("网络连接正常!") else: print("无网络连接。")

总结

这两种方法各有优缺点。使用socket库的方法相对底层,可以快速检查网络连接的可用性,而requests库则提供了更高级的HTTP操作,可以更详细地模拟网络请求,包括处理重定向、SSL等。根据实际应用需求选择合适的方法。

2024年8月5日 02:17 回复

你的答案