问题描述
我通过 Python 套接字模块实现了 TFTP 服务器。 TFTP 客户端一个接一个地发送 5 个 RRQ 请求。我的 TFTP 服务器接收这些 RRQ 请求中的前三个并发送文件 (.bin),接收确认,一切正常。但是没有检测到第四个和第五个RRQ请求,在前3次传输成功后。
以下是5个文件的大小顺序:
(1) 文件 1 -
(2) 文件 2 -
(3) 文件 3 - = 2900 KB
(4) 文件 4 -
(5) 文件 5 - = 49000 KB
当我尝试跳过第三个文件时 - 收到第四个请求,发送成功但在第五个 RRQ 处再次阻塞(开始发送但在发送的 10% 处停止) 以下是监听这些RRQ请求的代码。
def pollTFTP(self):
netconfig = self.winParent.get_iface_config()
if not netconfig:
raise BSPError('Bad network configuration.Check Network manager...')
host = self.config.get_config('tftpaddress',netconfig and netconfig['server'])
if not host:
raise BSPError('TFTP address no defined')
port = int(self.config.get_config('tftpport',str(TFTP_PORT)))
sock = socket.socket(socket.AF_INET,socket.soCK_DGRAM)
self.sock.append(sock)
sock.bind((host,port))
while self.winParent.ongoing==True:
r,w,e = select.select(self.sock,[],self.sock,self.timeout)
for sock in r:
data,addr = sock.recvfrom(516)
t = TftpConnection(self,self.winParent)
print "t :",t
thread.start_new_thread(t.connect,(addr,data))
此 Python 代码在 Linux 下运行良好,但在 Windows 下无法运行。
self.timeout = 2.0 秒 TFTP 端口 = 69
可以看到客户端通过Wireshark发送了第四个RRQ请求。我应该接收在以下行中创建的套接字对象
r,self.timeout)
编辑: 我发现某些数据包被防火墙阻止,因此这可能是一个问题。知道防火墙是否有 UDP 数据包和端口 69 的时间限制或大小限制吗?这个怎么配置?我在公司防火墙内工作
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)