我通过Python套接字模块实现了TFTP服务器。TFTP客户端一个接一个地发送5个RRQ请求。我的TFTP服务器接收这些RRQ请求中的前三个,并发送文件(.bin),接收确认,一切正常。但在前三次传输成功后,不会检测到第四次和第五次RRQ请求
以下是按顺序排列的5个文件的大小:
(1)文件1-<;50 KB
(2)文件2-<;50 KB
(3)文件3-=2900 KB
(4)文件4-<;50 KB
(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,w,e = select.select(self.sock, [], self.sock, self.timeout)
编辑: 我发现某些数据包通过防火墙被阻止,因此这可能是一个问题。你知道防火墙对UDP数据包和端口69是否有时间限制或大小限制吗?如何配置?我在公司防火墙内工作
目前没有回答
相关问题 更多 >
编程相关推荐