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