小型本地网中的一台PC和3台外部设备。
PC想要观察每个设备上的开关状态(开/关)。这将通过从PC到每个设备的初始命令来完成。
在PC上我运行了以下Python脚本(仅适用于一个设备):
import socket
UDP_IP1 = "192.168.1.64"
UDP_IP2 = "192.168.1.73"
UDP_IP3 = "192.168.1.74"
UDP_PORT = 45 # used port on external device
port = 52129
message = "Message to observe..." # not the real command string
def SendData():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", port))
msg = message.encode('utf-8')
s.sendto(msg, (UDP_IP1, UDP_PORT))
except:
print("Sending Error!!!\n")
return s
def ReceiveData(sock):
print("Receiving data: \n")
while True:
data, addr = sock.recvfrom(4096) # buffer size is 4096 bytes
print ("received message:", data)
if __name__ == "__main__":
s = SendData()
ReceiveData(s)
我的问题:原则上这个脚本正在运行,但是在大约2分钟后没有更改设备上的交换机时,当交换机状态发生变化时,我不再收到来自外部设备的数据包。但我可以通过已安装的Wireshark查看传入的数据包。
当我没有收到任何东西时,这似乎是一个暂停,但' sock.recvfrom'仍在等待数据。
是否有人遇到过同样的问题?