[英]How to send/receive data file over socket?
我正在使用 Python 编写套接字编程,以便通过 TCP 发送/接收文件。
当我发送/接收数据时,我发现它既没有发送也没有接收到文件的一部分。
这里有一部分根据缓冲区的大小发送一部分数据。
msg[i] = file[i].read()
file[i].close()
while 1:
tdata[i], msg[i] = msg[i][:buf], msg[i][buf:]
c.send(tdata[i])
if len(msg[i]) < buf:
break
请帮助我了解如何完全发送/接收整个数据。
当len(msg[i]) < buf
时它将停止发送,因此数据的结尾可能会丢失。
如果你想发送所有的 msg[i],最好这样做:
while msg[i]:
tdata[i], msg[i] = msg[i][:buf], msg[i][buf:]
c.sendall(tdata[i])
或者只发送一个 go:
c.sendall(msg[i])
请注意, send()
将返回实际发送了多少字节(因为它不一定会发送所有字节),因此如果您想发送所有字节(通常是这种情况),请改用sendall()
。
我会尝试这样的事情:
import shutil
shutil.copyfileobj(open('data'), c.makefile('wb'))
这就是 SimpleHTTPServer 模块的工作方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.