Python 套接字仅接收部分数据

问题描述

我正在处理一个在我的树莓派和我的笔记本电脑之间发送文件(1MB - 200MB)的项目。我在网上听了教程,但我不知道什么不起作用!问题是客户端(我的笔记本电脑)在达到整个缓冲区大小之前停止接收。例如,我发送了 50000 个字节,但我只收到了 8000 个字节。这是导致问题的项目的简化部分:

# SERVER RASPBerry PI,python 32 bit
import socket
import sys
from time import sleep

# Creating some data to send
b = b"".join([str(x**4).encode("utf-8") for x in range(4000)])



soc = socket.socket(socket.AF_INET,socket.soCK_STREAM)
soc.bind(("192.168.2.94",5050))
soc.listen(1)
conn,_ = soc.accept()

# Tells client the size of the incomming packet
conn.send(str(sys.getsizeof(b) + 16).encode("utf-8")) 
# (+16) Because the server is hosted on 32bits raspBerry pi comparend to my laptop (64 bits)

sleep(0.5)
conn.send(b)

客户端

#CLIENT LAPTOP PYTHON 64 BIT
from sys import getsizeof
import socket

soc = socket.socket(socket.AF_INET,socket.soCK_STREAM)
soc.connect(("192.168.2.94",5050))

size = int(soc.recv(1024).decode("utf-8")) # REceives the size of the file

data = soc.recv(size)


# Recreating server data
b = b"".join([str(x**4).encode("utf-8") for x in range(4000)])

print("size data from server : ",getsizeof(data),"Size of acutal data : ",size)
print(b == data)

当这段代码被执行时,我总是得到不同的值:

size data from server :  7333 Size of acutal data :  52804
False
size data from server :  8793 Size of acutal data :  52804
False

希望大家帮帮我!对不起我的英语,我还在学习;)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)