python socket中检测网络恢复断线重连
时间: 2023-12-15 21:03:51 浏览: 39
可以使用socket的settimeout()方法来实现。在连接时设置一个超时时间,若连接超时,就认为网络出现问题,可以尝试重新连接。具体代码如下:
```python
import socket
HOST = '127.0.0.1' # 目标 IP 地址
PORT = 8888 # 目标端口号
def connect():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
s.connect((HOST, PORT))
print('连接成功')
return s
except:
print('连接失败')
return None
s = connect()
while True:
if not s: # 如果连接失败,重新连接
s = connect()
continue
try:
data = s.recv(1024)
if not data: # 如果收到空数据,就认为连接出现问题,重新连接
s.close()
s = connect()
continue
print(data.decode())
except:
s.close()
s = connect()
continue
```
以上代码就实现了对网络断线的检测和恢复,当网络出现问题时,会自动重新连接,保证了程序的可靠性。