Улучшение обработки сообщений UDP - PullRequest
1 голос
/ 21 августа 2009

У меня есть программа для ПК, получающая данные от 20 пользовательских аппаратных блоков через UDP. Каждый из этих блоков постоянно отправляет UDP-сообщения на один UDP-сокет на ПК. Все сообщения содержат от 10 до 150 байт данных, и каждый блок отправляет около 20 сообщений за 12 секунд.

Тестирование показывает, что некоторые сообщения пропускаются ПК. Чем меньше ящиков в сети, тем меньше пропущенных сообщений.

Долгосрочное решение состоит в том, чтобы буферизовать данные в оборудовании и позволить ПК извлекать данные в соответствии с требованиями через TCP, но мне нужно решить / минимизировать проблему пропущенных сообщений в краткосрочной перспективе, пока это решение не будет развернуто. Идеи включают в себя: - обновление ПК - отфильтровывать ненужные сообщения перед передачей - объединение отдельных сообщений UDP в аппаратном обеспечении в одно большее - использование нескольких сокетов в ПК для получения сообщений

Мне нужны отзывы об этих идеях, а также любые идеи, которые мы могли пропустить.

Принимающая программа - это программа C ++ Builder, работающая на Indy9.

Ответы [ 3 ]

1 голос
/ 21 августа 2009

Наиболее вероятная проблема в сети.

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

Если это не поможет, попробуйте увеличить размер буфера приема на ПК. http://www.developerweb.net/forum/showthread.php?t=5773

1 голос
/ 21 августа 2009

удаленных сообщений в UDP связано с перегрузкой NET в вашей сети. Это не имеет ничего общего, если вы используете 1 или 5 сокетов для получения пакетов.

Кроме того, если у вас есть только 20 ящиков, отправка 20 сообщений за 12 секунд. Это будет означать только 33 сообщения в секунду. Это действительно арахис ... для сети, а также процессора.

Итак, единственная причина, по которой пакеты отбрасываются, заключается в том, что происходит большая нагрузка на сеть. Сетевые карты и маршрутизаторы имеют тенденцию предпочитать пакеты tcp-ip выше, чем udp.

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

0 голосов
/ 25 августа 2009

Спасибо другим парням за предложения, но для всех, кто обращается к нам, решением здесь было заменить старый использованный ПК (1,6 ГГц Celeron с 512 МБ ОЗУ) на правильную машину спецификации (2 ГГц процессор Core 2 с 2 ГБ ОЗУ). ).

...