python如何判断网络通断

python如何判断网络通断

作者:Elara发布时间:2026-01-07阅读时长:0 分钟阅读次数:45

用户关注问题

Q
如何使用Python检测当前网络是否可用?

我想知道在Python脚本中,怎样判断当前计算机的网络连接状态是否正常,有没有推荐的方法或库?

A

通过尝试连接外部服务器判断网络状态

可以使用Python的socket模块或者requests库尝试连接一个已知的服务器(例如www.google.com)。如果连接成功,说明网络是可用的。使用requests库可以发送一个HTTP请求,如果响应正常即可判断网络通畅。示例:

import requests
try:
    requests.get('https://www.google.com', timeout=5)
    print('网络正常')
except requests.ConnectionError:
    print('网络不可用')
Q
有没有Python方法检测局域网内某台设备是否在线?

我想用Python判断局域网中的某个IP地址或设备是否在线,应该怎么做?

A

使用Ping命令或socket连接对局域网设备进行检测

可以调用系统的ping命令,或者使用Python的subprocess模块执行ping并解析结果,来判断目标设备是否在线。另一种方式是尝试建立TCP连接,如果端口开放则说明设备在线。示例使用ping:

import subprocess
import platform

def ping(host):
    param = '-n' if platform.system().lower()=='windows' else '-c'
    command = ['ping', param, '1', host]
    return subprocess.call(command) == 0

host = '192.168.1.100'
if ping(host):
    print(f'{host} 在线')
else:
    print(f'{host} 离线')
Q
Python里检查网络连接失败时如何进行异常处理?

网络检测过程中如果连接失败,Python程序可能抛出异常,想了解有哪些常见异常需要捕获,以及如何优雅处理?

A

捕获网络连接相关异常并作出合理处理

在检测网络时,requests库最常见的异常是requests.ConnectionError和requests.Timeout。应通过try-except块捕获这些异常,阻止程序崩溃,并提示用户网络异常。例如:

import requests
try:
    response = requests.get('https://www.example.com', timeout=3)
    response.raise_for_status()
except requests.ConnectionError:
    print('无法连接到网络')
except requests.Timeout:
    print('网络请求超时')
except requests.HTTPError as e:
    print(f'HTTP错误: {e}')
else:
    print('网络连接正常')