UDP Last Data received timeout from different sources
i have开发者_如何学Go a C# Winform that is accepting UDP Packets from several devices a single port.
The devices sent UDP packets to me at a set interval and i want to implement a way to know when a device has stopped sending packets.
I use a single UDPClient and using the Receive function. When data is received, i pass the RemoteIPEndPoint back to my mainform to update values.
What would be the best way to this?
Thanks for the help!
This is a little abstract questions and there could be many solutions to that. One simple and quick solution would be to create a HashTable where, HashKey = IP of Remote device Value = Timestamp when last packet received from that device.
Now whenever you receive a packet you just update the hashtable like
if (hashTable contains "RemoteEndPoint") { hashTable [ remoteEndPoint ] = now() // current Time. } else { // if you want to add/register new device to your list, do it here }
Beside that you can just run a Timer with some interval that traverse the HashTable and check if some TimeStamp is less then (currentTime - Your Set Interval), then you can say that you haven't received the data from that end point.
精彩评论