小编flo*_*ark的帖子

Python UDP套接字半随机无法接收

我有一些问题,我猜它是代码.

该应用程序用于"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)

python sockets windows udp

6
推荐指数
1
解决办法
820
查看次数

标签 统计

python ×1

sockets ×1

udp ×1

windows ×1