python socket怎么判断连接断了
时间: 2024-09-28 21:06:29 浏览: 41
在Python中,你可以使用socket编程来创建网络连接,并通过异常处理来检测连接是否已断开。当你尝试从一个socket读取数据时,如果连接已经关闭(例如,对方关闭连接或网络中断),socket会抛出`ConnectionResetError`异常。你可以捕获这个异常来判断连接是否已经断开。
下面是一个简单的示例:
```python
import socket
def check_connection(host, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5) # 设置超时时间,防止阻塞过久
try:
sock.connect((host, port))
while True:
data = sock.recv(1024) # 模拟接收数据
if not data: # 如果recv返回空,则可能是连接断开了
break
except ConnectionResetError as e:
print("Connection reset by peer:", str(e))
finally:
sock.close()
check_connection('localhost', 8080)
```
在这个例子中,当接收到的数据为空时,我们就会假设连接已经断开。然后在`finally`块中,无论是否发生异常,都会确保socket被关闭。
阅读全文