【问题标题】:Issue when uploading a file from client to server将文件从客户端上传到服务器时出现问题
【发布时间】: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 的文件。

标签: python sockets


【解决方案1】:

感谢所有善良的评论者,我找到了问题的答案。

  • 创建服务器套接字。
  • 用客户端套接字连接到服务器套接字。
  • 将文件与客户端一起发送到服务器。
  • 当客户端确认文件已发送时,您关闭连接。
  • 服务器继续侦听连接。
  • 冲洗并重复!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多