Я отправляю/получаю очень короткие UDP-пакеты между компьютером (C#) и микроконтроллером (C++). Независимо от скорости, я теряю около 50% своих UDP-пакетов, иногда больше, иногда меньше.50% udp-пакеты потеряны
В C# Я использую UDPClient, отправляя в IPEndPoint (синхронно) и получая асинхронно.
Мои буферы достаточно большие, и я вижу, что потери производятся на компьютере как для отправки, так и для приема (микро-отправка как можно большего количества пакетов). Я пытаюсь отправить/получить около 60 пакетов в секунду, но я могу настроить это, и даже 10 пакетов в секунду у меня есть потери. Например, я отправил 20 пакетов в секунду, микро принимает и отправляет 15, а мой компьютер получает 10 пакетов в секунду.
Мы говорим о локальном подключенном к сети Ethernet-соединении 1 гигабита, очень коротком (возможно, 10 футов). Я отправляю одноадресные пакеты, хотя в сети у меня также есть многоадресное видео (12 Мбит/с). Самый большой пакет составляет около 120 байт, большинство из них около 30-40 байт.
Любые советы о том, как отладить проблему или что может быть причиной этого?
Спасибо.
Спасибо за ваш ответ. Просто отредактировал вопрос, добавив, что дополнительная информация. – chourizo
@chourizo У меня возникают проблемы с широковещательными пакетами multicast/udp, я тоже испытываю убытки + 60%, я буду сообщать с любой помощью/информацией об этой проблеме, которая может быть полезной. В то же время я буду отправлять повторяющиеся пакеты, то есть отправлять каждый пакет 2 раза, если первый «потерян» каким-то образом – KGCybeX
Надеюсь, что я ошибаюсь, но я боюсь, что увеличение количества пакетов только ухудшит ситуацию. Часть моих проблем связана с наличием двух сетевых интерфейсов с неправильными приоритетами. Пожалуйста, убедитесь, что это не так (отключите один из них).Кроме того, попробуйте иметь больше пакетов с меньшим количеством данных для уменьшения накладных расходов. делая это, я исправил свои проблемы. – chourizo