小编Mar*_*ino的帖子

通过套接字发送二进制文件时出现问题,python

我正在尝试编写一个将二进制文件从客户端传输到服务器的程序。这是代码:

客户端(发送文件)

  def send_file(self,filename):
        print("Sending: " + filename)
        size = self.BUFFER_SIZE
        with open(filename,'rb') as f:
            raw = f.read().decode()
        buffer = [raw[i:i + size] for i in range(0, len(raw), size)]
        for x in range(len(buffer)):
            self.sock.sendall(buffer[x].encode())

        return
Run Code Online (Sandbox Code Playgroud)

服务器(接收文件)

def recv_file(self, conn, filename):
    packet = ""
    buffer = ""
    while True:
        buffer = conn.recv(self.BUFFER_SIZE)
        packet = packet + str(buffer.decode())
        if not len(buffer) == self.BUFFER_SIZE:
            break
    with open(filename, 'wb') as f:
        f.write(bytes(packet.encode()))
    #print(packet)
    return 
Run Code Online (Sandbox Code Playgroud)

这样我可以传输 txt 文件,但是当我必须传输 jpeg 或任何其他类型的文件时,它会在循环中冻结。有人可以解释一下为什么吗?我是 py 新手,我正在努力学习

python sockets file

3
推荐指数
1
解决办法
4632
查看次数

标签 统计

file ×1

python ×1

sockets ×1