我正在尝试编写一个将二进制文件从客户端传输到服务器的程序。这是代码:
客户端(发送文件)
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 新手,我正在努力学习