Отладка пропущенных широковещательных дейтаграмм, которые отображаются в wirehark, но не в приложении С#?

У меня есть две машины A1 и A2, на каждой из которых работает один и тот же встроенный код, который передает пакеты. Третья машина, B3, представляет собой коробку с Windows XP, на которой запущено приложение C# (.NET 4.0), которое прослушивает эти широковещательные сообщения.

Все данные от A1 получены C#, как и ожидалось, 95% данных от A2 получены с прерывистыми, кажущимися случайными, потерянными дейтаграммами UDP.

Когда я смотрю на wireshark на B3, все пакеты с обеих машин приходят именно так, как и ожидалось, но когда я сразу после их получения сбрасываю байты в текстовый файл, я вижу, что дейтаграммы с B2 отсутствуют.

Как может быть, что пакет отображается на wireshark, но иногда не передается моему приложению C #? Я мог бы понять, если бы в дейтаграмме были плохие заголовки и т. д., но Wireshark показывает все, как и ожидалось, даже для этих отсутствующих. Выполняет ли Windows/.NET некоторую проверку, которую Wireshark не выполняет по умолчанию?


person John    schedule 23.09.2011    source источник


Ответы (1)


Я бы рекомендовал выгрузить поток B2 в файл, а затем воспроизвести его непосредственно в вашем приложении (если возможно, используя локальное приложение). Вы должны извлечь выгоду из наличия постоянного потока данных, чтобы (надеюсь) сузить проблемную часть.

person Groo    schedule 23.09.2011