UDP上次数据从不同来源收到超时

时间:2011-02-26 02:44:23

标签: c# udp

我有一个C#Winform,它接受来自多个设备的UDP数据包的单个端口。

设备以设定的间隔向我发送UDP数据包,我想实现一种方法来了解设备何时停止发送数据包。

我使用单个UDPClient并使用Receive函数。收到数据后,我将RemoteIPEndPoint传递回我的主窗体以更新值。

最好的方法是什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是一个小抽象的问题,可能有很多解决方案。一个简单快速的解决方案是创建一个HashTable,其中, HashKey =远程设备的IP 值=从该设备收到最后一个数据包时的时间戳。

现在,无论何时收到数据包,您只需更新哈希表,如

if(hashTable包含“RemoteEndPoint”) {  hashTable [remoteEndPoint] = now()//当前时间。 } 其他 {  //如果您想在列表中添加/注册新设备,请在此处进行操作 }

除此之外,您可以运行一个具有遍历HashTable的间隔的Timer,并检查某个TimeStamp是否小于(currentTime - 您的Set Interval),那么您可以说您还没有收到该端点的数据