Python 通过UDP套接字发送文件
我正在使用python的UDP套接字发送文件。在receiver sidefile_receiver.py,您需要中断程序的ctrl-c,以便在最后接收文件。因此,我将settimeout设置为2秒,以便在完全接收到数据后,程序自动退出。如果我知道的很清楚,您不能在UDP中设置非阻塞套接字。克服这个问题的最好办法是什么 文件_sender.pyPython 通过UDP套接字发送文件,python,Python,我正在使用python的UDP套接字发送文件。在receiver sidefile_receiver.py,您需要中断程序的ctrl-c,以便在最后接收文件。因此,我将settimeout设置为2秒,以便在完全接收到数据后,程序自动退出。如果我知道的很清楚,您不能在UDP中设置非阻塞套接字。克服这个问题的最好办法是什么 文件_sender.py #!/usr/bin/env python from socket import * import sys s = socket(AF_INET,S
#!/usr/bin/env python
from socket import *
import sys
s = socket(AF_INET,SOCK_DGRAM)
host ="localhost"
port = 9999
buf =1024
addr = (host,port)
f=open (sys.argv[1], "rb")
data = f.read(buf)
while (data):
if(s.sendto(data,addr)):
print "sending ..."
data = f.read(buf)
s.close()
f.close()
文件_receiver.py
#!/usr/bin/env python
from socket import *
import sys
import select
host="0.0.0.0"
port = 9999
s = socket(AF_INET,SOCK_DGRAM)
s.bind((host,port))
addr = (host,port)
buf=1024
f = open("op.pdf",'wb')
data,addr = s.recvfrom(buf)
while(data):
f.write(data)
s.settimeout(2)
data,addr = s.recvfrom(buf)
f.close()
s.close()
谢谢。由于UDP连接较少,因此接收方无法直接知道发送方何时完成发送 您可以解决这个问题,例如,当发送方发送完一个特殊的数据包时,该数据包表示不会有更多的数据包跟随
然而,我强烈建议你不要这样做;UDP不保证数据包的传递——数据包可能丢失、复制或无序传递。显然,对于大多数文件来说,如果它们缺少一个部分,或者重新排序,等等,这是不可接受的。。如果要在主机之间传输文件,我认为最好使用TCP。因为UDP连接较少,所以接收方无法直接知道发送方何时完成了发送 您可以解决这个问题,例如,当发送方发送完一个特殊的数据包时,该数据包表示不会有更多的数据包跟随 然而,我强烈建议你不要这样做;UDP不保证数据包的传递——数据包可能丢失、复制或无序传递。显然,对于大多数文件来说,如果它们缺少一个部分,或者重新排序,等等,这是不可接受的。。如果您想在主机之间传输文件,我认为您最好使用TCP