【发布时间】:2011-02-26 02:44:22
【问题描述】:
我有一个 C# Winform,它通过单个端口接受来自多个设备的 UDP 数据包。
设备以设定的时间间隔向我发送 UDP 数据包,我想实现一种方法来了解设备何时停止发送数据包。
我使用单个 UDPClient 并使用 Receive 函数。收到数据后,我将 RemoteIPEndPoint 传递回我的主窗体以更新值。
最好的方法是什么?
感谢您的帮助!
【问题讨论】:
我有一个 C# Winform,它通过单个端口接受来自多个设备的 UDP 数据包。
设备以设定的时间间隔向我发送 UDP 数据包,我想实现一种方法来了解设备何时停止发送数据包。
我使用单个 UDPClient 并使用 Receive 函数。收到数据后,我将 RemoteIPEndPoint 传递回我的主窗体以更新值。
最好的方法是什么?
感谢您的帮助!
【问题讨论】:
这是一个有点抽象的问题,可能有很多解决方案。一种简单快捷的解决方案是创建一个 HashTable,其中, HashKey = 远程设备的 IP 值 = 从该设备收到最后一个数据包时的时间戳。
现在,每当您收到一个数据包时,您只需像这样更新哈希表
如果(哈希表包含“RemoteEndPoint”) { hashTable [ remoteEndPoint ] = now() // 当前时间。 } 别的 { // 如果您想在列表中添加/注册新设备,请在此处进行 }
除此之外,您可以运行一个具有一定间隔的 Timer 遍历 HashTable 并检查某个 TimeStamp 是否小于(currentTime - 您的设置间隔),然后您可以说您还没有收到来自该端点的数据.
【讨论】: