关于python的socket

今天遇到一个很奇怪的问题,在python中运行

s.recv(length)时,

每次读取长度不一样,且都小于length,以至于传输文件总是接收不全,

于是翻阅官方文档发现:

1.参数length是最大接收字节长度;

2.每次执行socket.recv()时,就会从tcp的缓冲区读取一次数据,有多少读多少(少于length时);

这就是为什么文件接收不全的原因,要接收整个文件,建议用while,伪代码如下:

while True:

    length = getLength(s)

    pic = s.recv(length)

    while (length > len(pic)):
        pic = pic + s.recv(length - len(pic))
发布了130 篇原创文章 · 获赞 105 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/THMAIL/article/details/103966368