问题描述
我正在处理一个在我的树莓派和我的笔记本电脑之间发送文件(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 (将#修改为@)