我正在使用 python 的 UDP 套接字发送文件。在接收方(file_receiver.py),您需要中断(ctrl-c)程序才能在最后接收文件。因此,我将 settimeout 设置为 2 秒,以便程序在完全接收到数据后自动退出。如果我知道的话,你不能在 UDP 中设置非阻塞套接字。克服这个问题的最佳方法是什么。
文件发件人.py
#!/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()
文件接收器.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()
谢谢。