【发布时间】:2019-06-07 12:38:02
【问题描述】:
如何使用 python 3.5 中的 UDP 套接字将大文件(视频、音频)从客户端传输到本地主机中的服务器?我能够发送一个小的 .txt 文件,但不能发送其他文件类型。请给我建议。 谢谢!
这是我传输文本文件的代码。
客户代码:
import socket
import sys
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
host = '127.0.0.1'
port=6000
msg="Trial msg"
msg=msg.encode('utf-8')
while 1:
s.sendto(msg,(host,port))
data, servaddr = s.recvfrom(1024)
data=data.decode('utf-8')
print("Server reply:", data)
break
s.settimeout(5)
filehandle=open("testing.txt","rb")
finalmsg=filehandle.read(1024)
s.sendto(finalmsg, (host,port))
服务器代码:
import socket
host='127.0.0.1'
port=6000
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(("",port))
print("waiting on port:", port)
while 1:
data, clientaddr= s.recvfrom(1024)
data=data.decode('utf-8')
print(data)
s.settimeout(4)
break
reply="Got it thanks!"
reply=reply.encode('utf-8')
s.sendto(reply,clientaddr)
clientmsg, clientaddr=s.recvfrom(1024)
【问题讨论】:
-
你能告诉我们你的代码吗?
-
当然。我已将其添加到我的原始帖子中
-
由于 UDP 是一个不可靠的协议,您必须为其添加一些可靠性层。这不是一项微不足道的任务,将所有这些添加到您的微不足道的代码示例中,它只是设法发送/接收单个数据包,这会使问题过于宽泛。但是您可能会从使用多次发送和接收开始,以便传输更多数据。除此之外,请了解在 SO 提问时如何使用正确的代码格式。
-
哦,好的,谢谢!对格式感到抱歉。
-
如何拆分文件并发送出去?我不介意丢失几个数据包。
标签: python-3.x udp file-transfer large-files