Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
2 / 2 / 1
Регистрация: 15.04.2018
Сообщений: 46

Принимаются не все пакеты UDP

09.02.2020, 09:40. Показов 1848. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Принимаю на порт посылки UDP.
Длина пакетов 1400 байт, т.е. не фрагментируются.
Периодичность посылок - 50 мс.
Прием осуществляю по MSDN.
Эпизодически не могу принять несколько пакетов.
Бывает 3 - 4 часа прием идет нормально, потом пропуск.
При этом сниффер принимает ВСЕ пакеты.
Обработка принятых данных занимает менее 1 мс.
Куда копать? Вот код.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        void ReceiveMessage()
        {
            UdpClient udpResponse = new UdpClient(5555);
            IPEndPoint recordEp = new IPEndPoint(IPAddress.Parse("192.168.1.111"), 5555);
            try
            {
                while (true)
                {
                    Byte[] recordBytes = udpResponse.Receive(ref recordEp);
 
                   // Здесь идет обработка данных. длительность ~1 мс
 
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                udpResponse.Close();
            }
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.02.2020, 09:40
Ответы с готовыми решениями:

Сервер UDP принимающий/передающий пакеты от всех/всем клиентам
Написан клиент, который передает пакеты на север. Помощь нужна в следующем. Мне нужно чтобы приходящие пакеты на сервер сразу были...

COM-порт принимает не все пакеты
И так, у меня есть программа которая работает с com-портом. Но проблема в том, что не всегда он получает все пакеты(где-то что-то теряет)....

Пакеты передаются, но не принимаются
1-ый комп подключен через usb кабель - все работает, 2-ой через сетевой - не пашет Модем zyxel p-660ru настроен в режим роутинг, сетевуха...

9
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
09.02.2020, 12:19
Может потому что UDP не гарантирует доставку пакетов?
0
2 / 2 / 1
Регистрация: 15.04.2018
Сообщений: 46
09.02.2020, 12:22  [ТС]
Читаем внимательно
Цитата Сообщение от ЛысыйКибер Посмотреть сообщение
При этом сниффер принимает ВСЕ пакеты.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
09.02.2020, 12:39
ЛысыйКибер, я читал внимательно.
0
2 / 2 / 1
Регистрация: 15.04.2018
Сообщений: 46
09.02.2020, 13:33  [ТС]
Чтобы не было неоднозначности, поясню шире.
При тестировании параллельно снифаю трафик.
До снифера доходят ВСЕ пакеты.
А мое приложение позволяет изредка их пропускать.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
09.02.2020, 13:40
Возможно до снифера доходят в том числе битые пакеты у которых контрольная сумма не повпадает.
0
2 / 2 / 1
Регистрация: 15.04.2018
Сообщений: 46
09.02.2020, 13:44  [ТС]
У меня не используется контрольная сумма Данных.
Только для IP заголовка.
Тем более, снивер выделяет битые пакеты.
Так что тут все проверено - норм.

Добавлено через 1 минуту
В 2009 году была подобная тема.
В решении скупо было сказано про асинхронные методы.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
09.02.2020, 13:53
В UDP протоколе по умолчанию используется контрольная сумма.
Какой сниффер используется и на какой протокол он настроен? UDP или IP?

Добавлено через 1 минуту
Цитата Сообщение от ЛысыйКибер Посмотреть сообщение
У меня не используется контрольная сумма Данных.
Только для IP заголовка.
Ок, тогда сдаюсь.
0
2 / 2 / 1
Регистрация: 15.04.2018
Сообщений: 46
09.02.2020, 14:13  [ТС]
Я использую Ethereal. И натравливаю его на хост, с которого летят пакеты.
Миниатюры
Принимаются не все пакеты UDP  
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
09.02.2020, 21:35
Цитата Сообщение от ЛысыйКибер Посмотреть сообщение
Обработка принятых данных занимает менее 1 мс.
Сколько времени занимает весь ReceiveMessage?
Сделайте логирование времени приема. Можно предположить, что в какой то момент обработка занимает дольше 50мс.
Если есть взаимодействие с бд, возможно, в какой то момент таблица заблокирована другим процессом и приходится ждать.
Цитата Сообщение от ЛысыйКибер Посмотреть сообщение
В решении скупо было сказано про асинхронные методы
Асинхронные методы никак не влияют на прием или передачу. Если, по вашим словам, 49 мс программа тупо ожидает, то они бесполезны (если нет каких то других действий в потоке, где идет прием сообщений)..
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.02.2020, 21:35
Помогаю со студенческими работами здесь

Пакеты отправляются, но не принимаются
Пытался сменить винду на Ubuntu, не пошло, старый ноут не поддерживает PAE... Снова поставил винду, и теперь пакеты отправляются, но не...

Не работает интернет, не принимаются пакеты
Перестал работать интернет, при открытии сетевого подключения отправленные пакеты идут, принятых 0, это проблема в свитче моего подъезда?...

Windows xp. Нет интернета(пакеты не принимаются)
Здравствуйте! Помогите разобраться с проблемой. Переустановила систему,предварительно отформатировав диск. Система windows xp pro sp3 ...

Не принимаются пакеты. Сетевая карта Intel 82566DM-2
Всем привет. Такая проблема: после установки вин7 не получается подключиться к интернету. ПК HP Compaq DC 7800, сетевая Intel 82566DM-2....

Ошибки в работе с COM портом - пакеты принимаются через один
Доброго времени суток. Делаю программу с использованием COM порта. Работу с COM портом осуществляю так: uint8_t input_buffer;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru