python socket 判断是否断开
时间: 2024-06-18 21:02:46 浏览: 23
在 Python 中使用 Socket 编程时,可以通过以下两种方式来判断连接是否断开:
1. 使用 `recv()` 函数检测是否收到数据
在 Socket 编程中,当一个连接关闭时,`recv()` 函数会返回空字符串。因此,可以通过判断 `recv()` 函数返回的数据是否为空字符串来判断连接是否已经断开。
示例代码如下:
```python
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('www.baidu.com', 80))
while True:
data = sock.recv(1024)
if not data:
print("Connection closed.")
break
```
在上面的代码中,`recv()` 函数每次最多接收 1024 字节的数据,如果收到的数据为空字符串,则认为连接已经断开。
2. 使用 `send()` 函数检测是否发送成功
在 Socket 编程中,当一个连接关闭时,`send()` 函数会抛出异常。因此,可以通过捕获 `send()` 函数抛出的异常来判断连接是否已经断开。
示例代码如下:
```python
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('www.baidu.com', 80))
while True:
try:
sock.send(b'Hello, world!')
except Exception as e:
print("Connection closed.")
break
```
在上面的代码中,如果 `send()` 函数抛出异常,则认为连接已经断开。注意,上面的代码中发送的是字节串而不是字符串。如果发送字符串,则需要在字符串前面加上 `b` 前缀以将其转换成字节串。