首页 文章

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

提问于
浏览
1

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

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

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

最好的方法是什么?

谢谢您的帮助!

1 回答

  • 0

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

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

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

    除此之外,您可以运行一个具有一定时间间隔的定时器来遍历HashTable并检查某个TimeStamp是否小于(currentTime - 您的设置间隔),那么您可以说您没有从该 endpoints 接收数据 .

相关问题