python socket recv 慢
时间: 2023-12-16 20:05:26 浏览: 235
python网络编程调用recv函数完整接收数据的三种方法
Python的socket.recv(n)函数并没有真正将我们希望接收的数据字长n全部接收,只需要保证Python将我们希望接收的所有长度接收即可。这就导致了当接收发送数据的缓冲区足够大时,Python作为客户端接收数据,经常出现接收为空数据的情况。为了解决这个问题,我们可以自己实现一个接收的函数,如下所示:
```python
def recvall(sock, count):
buf = b''
while count:
newbuf = sock.recv(count)
if not newbuf: return None
buf += newbuf
count -= len(newbuf)
return buf
```
这个函数会一直接收数据,直到接收到我们需要的所有数据为止。使用这个函数可以避免Python socket的recv()偶尔出现接收不到数据的情况。
阅读全文