UDP Последние данные получены тайм-аут из разных источников - PullRequest
1 голос
/ 26 февраля 2011

У меня есть C # Winform, которая принимает UDP-пакеты от нескольких устройств на один порт.

Устройства отправляли мне UDP-пакеты с заданным интервалом, и я хочу реализовать способ узнать, когда устройство прекратило отправлять пакеты.

Я использую один UDPClient и использую функцию Receive.Когда данные получены, я передаю RemoteIPEndPoint моей основной форме для обновления значений.

Как лучше всего это сделать?

Спасибо за помощь!

1 Ответ

0 голосов
/ 09 марта 2011

Это немного абстрактные вопросы, и может быть много решений для этого. Одним простым и быстрым решением было бы создать HashTable, где HashKey = IP удаленного устройства Значение = метка времени, когда последний пакет был получен от этого устройства.

Теперь, когда вы получаете пакет, вы просто обновляете хеш-таблицу как

if (hashTable содержит «RemoteEndPoint») { hashTable [remoteEndPoint] = now () // текущее время. } еще { // если вы хотите добавить / зарегистрировать новое устройство в свой список, сделайте это здесь }

Помимо того, что вы можете просто запустить Timer с некоторым интервалом, который пересекает HashTable и проверить, не меньше ли некоторый TimeStamp (currentTime - ваш интервал установки), тогда вы можете сказать, что вы не получили данные из этой конечной точки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...