python:socket获取完返回数据一直在等待
时间: 2024-12-12 14:30:47 浏览: 6
python设定并获取socket超时时间的方法
当你在Python中使用`socket`获取数据时,如果你不主动关闭连接或者设置超时,程序通常会一直阻塞在那里等待新的数据。如果已经成功接收到了所有数据,你应该调用`recv()`方法的空字符串版本(`sock.recv(0)`)或者检查之前接收的数据是否已满,然后手动关闭连接。
下面是一个示例,展示了如何在读取完整个响应后关闭连接:
```python
import socket
def receive_data(host, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
all_data = b''
while True:
chunk = sock.recv(1024) # 每次接收1KB数据
if not chunk: # 如果接收空则表示读取完成或发生错误
break
all_data += chunk
sock.close() # 关闭连接
return all_data.decode() if isinstance(all_data, bytes) else all_data
data = receive_data('localhost', 8080)
print(f"Received data: {data}")
阅读全文