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