我有一些问题,我猜它是代码.
该应用程序用于"ping"某些自定义网络设备,以检查它们是否还活着.它使用特殊的UDP数据包每隔20秒对它们进行一次ping操作并期望响应.如果他们未能连续3次ping,则应用程序会向员工发送警告消息.
应用程序每周7天,每天24小时运行一次,每天随机播放一次(主要是2-5次),应用程序无法在10分钟的精确时间内收到UDP数据包,之后一切都恢复正常.在那10分钟内,只有1台设备似乎在回复,其他设备似乎已经死亡.我已经能够从日志中推断出来了.
我已经使用wireshark来嗅探数据包,并且我已经验证了ping数据包的输入和输入,所以网络部分似乎工作正常,一直到操作系统.计算机正在运行WinXPPro,有些没有配置防火墙.我在不同的计算机,不同的Windows安装和不同的网络上遇到此问题.
我真的不知道这里可能出现什么问题.
我附上了完成所有网络的代码的相关部分.这是在与应用程序其余部分分开的线程中运行的.
我提前感谢您提供的任何见解.
def monitor(self):
checkTimer = time()
while self.running:
read, write, error = select.select([self.commSocket],[self.commSocket],[],0)
if self.commSocket in read:
try:
data, addr = self.commSocket.recvfrom(1024)
self.processInput(data, addr)
except:
pass
if time() - checkTimer > 20: # every 20 seconds
checkTimer = time()
if self.commSocket in write:
for rtc in self.rtcList:
try:
addr = (rtc, 7) # port 7 is the echo port
self.commSocket.sendto('ping',addr)
if not self.rtcCheckins[rtc][0]: # if last check was a failure
self.rtcCheckins[rtc][1] += 1 # …Run Code Online (Sandbox Code Playgroud)