【发布时间】:2021-10-12 13:40:10
【问题描述】:
我正在开发一个备份文件的程序,例如 OneDrive 或 iCloud。
我让一切正常,但是当我通过套接字发送文件时,它会卡住,直到我关闭连接。
这是代码示例:
客户:
def UpdateFileOnServer(file):
print("[!] Uploading file to server: ",file)
with open(clientFolder+file,"rb") as f:
s.sendall(file.encode())
file = f.read()
s.sendall(file)
print("[!] File has been sent.")
服务器:
with open(fileLocation,"wb") as f:
print("[!] File recieved! Downloading...")
while True:
data = conn.recv(4096)
if not data:f.close();break
f.write(data)
所以再总结一下:
- 客户端发送文件并表示已发送。
- 服务器收到大约 90% 的文件并无限期挂起,直到我 CTRL+C 客户端
- 当我这样做时,服务器完成文件传输并成功接收文件。
【问题讨论】:
-
文件有多大?
-
文件15kb
-
具体尺寸是多少?
-
好的,所以我需要先发送文件的实际大小,然后接收文件,直到我达到大小标记,然后我打破并等待新的。我理解正确吗?
-
我运行了你的代码,它在我的机器上运行良好,随机生成了一个 15KB 的文件。