Python 套接字模块未检测到 TFTP RRQ

问题描述

我通过 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 (将#修改为@)