Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 03.02.2018, 15:49   #1
Shadowfirst
 
Регистрация: 13.09.2010
Сообщений: 7
Репутация: 10
По умолчанию Системой дропаются UDP пакеты

Есть такая ситуация. Две машины соеденины точка-точка. Одна передающая, другая принимающая. Передаются UDP пакеты. Но на принимающей присловутая функция recv принимает не все пакеты. Я знаю что такое протокол UDP, и говорить о негарантированной доставке не нужно. При этом в Wireshark пропущенные пакеты видятся и отличий кроме контрольной суммы и id нет. Передача идёт по гигабитному интерфейсу и загруженность канала в диспетчере выдаёт не больше 1.5%(полтора процента). Также проверял заполненность буфера приёма при работе программы, она не превышает размера одного пакета(1470) при имеющимся 8192. Загрузка системы при работе принимающей программы 0-3%.Вопрос соответственно какие причины могут быть того что системой пакеты просто дропаются?
Shadowfirst вне форума   Ответить с цитированием
Старый 03.02.2018, 16:59   #2
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,394
Репутация: 2215

icq: 100500
skype: kick-ass
По умолчанию

Прога чья? Исходник е?
__________________
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума   Ответить с цитированием
Старый 03.02.2018, 18:19   #3
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,297
Репутация: 1617
По умолчанию

Цитата:
Сообщение от Shadowfirst Посмотреть сообщение
отличий кроме контрольной суммы
Цитата:
Сообщение от Shadowfirst Посмотреть сообщение
какие причины могут быть того что системой пакеты просто дропаются
Несовпадения контрольной суммы вам недостаточная причина?
waleri вне форума   Ответить с цитированием
Старый 03.02.2018, 19:13   #4
Shadowfirst
 
Регистрация: 13.09.2010
Сообщений: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Несовпадения контрольной суммы вам недостаточная причина?
Не достаточная так как у пакетов на сетевом уровне есть свой индетификатор пакета который индивидуальный для каждого пакета(понятное дело от 0 до 0хFFFF) и соответственно изменяется контрольная сумма загаловка. Я про эту контрольную сумму и говорил.

Последний раз редактировалось Shadowfirst; 03.02.2018 в 19:20.
Shadowfirst вне форума   Ответить с цитированием
Старый 03.02.2018, 19:16   #5
Shadowfirst
 
Регистрация: 13.09.2010
Сообщений: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Прога чья? Исходник е?
Что дадут исходники если речь идёт о системной функции recv которая находится в блокирующем режиме и не реагирует на некоторые пакеты, которые регистрирует Wireshark. Она работает в отдельном потоке и кроме приема этот поток ни чем не занимается.

Последний раз редактировалось Shadowfirst; 03.02.2018 в 19:19.
Shadowfirst вне форума   Ответить с цитированием
Старый 03.02.2018, 21:00   #6
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,394
Репутация: 2215

icq: 100500
skype: kick-ass
По умолчанию

Цитата:
Сообщение от Shadowfirst Посмотреть сообщение
Что дадут исходники если речь идёт о системной функции recv которая находится в блокирующем режиме и не реагирует на некоторые пакеты, которые регистрирует Wireshark. Она работает в отдельном потоке и кроме приема этот поток ни чем не занимается.
Ты на вопрос-то ответь! А то прям как депутан перед журналюгами.
---------
recv() и recvfrom() - это функции, т.е. они возвращают какое-то значение, которое можно проанализировать, если исходник есть.
__________________
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 03.02.2018 в 21:14.
min@y™ вне форума   Ответить с цитированием
Старый 03.02.2018, 21:11   #7
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,297
Репутация: 1617
По умолчанию

Цитата:
Сообщение от Shadowfirst Посмотреть сообщение
Она работает в отдельном потоке и кроме приема этот поток ни чем не занимается.
Например если поток долго занят между вызовами recv
waleri вне форума   Ответить с цитированием
Старый 03.02.2018, 21:23   #8
Shadowfirst
 
Регистрация: 13.09.2010
Сообщений: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Например если поток долго занят между вызовами recv
Занят он ровно на столько на сколько нужно времени что бы положить данные в очередь и сделать wakeup тому потоку который занимается обработкой, да и то для этого есть приемный буфер устройства в котором хранится то что не прочитано. Буфер не переполняется, проверял с помощью ioctlsocket на предмет сколько данных там находится перед чтением, и это число как я писал вначале не превышало размера одного пакета.

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Ты на вопрос-то ответь! А то прям как депутан перед журналюгами.
---------
recv() и recvfrom() - это функции, т.е. они возвращают какое-то значение, которое можно проанализировать, если исходник есть.
Код мой, и этот ответ не повлияет ни на что. А функции возвращают при удачном выполнении размер прочитанного блока. Ошибок не возвращало.
Shadowfirst вне форума   Ответить с цитированием
Старый 03.02.2018, 21:34   #9
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,394
Репутация: 2215

icq: 100500
skype: kick-ass
По умолчанию

Цитата:
Сообщение от Shadowfirst Посмотреть сообщение
Код мой, и этот ответ не повлияет ни на что. А функции возвращают при удачном выполнении размер прочитанного блока. Ошибок не возвращало.
WSAGetLastError() проверял?

Хотя... Я хотел сначала поделиться подходящей инфой, потом мне любопытно стало, почему у меня-то работает, что я делаю не так? Задача у меня год назад была ну прям один в один как твоя - дуплекс по UDP комп <-----> устройство. Кстати, когда обмен отлаживал, тоже юзал wireshark, годная тулза.
Теперь и любопытство пропало: ты вместо того, чтобы ответить на простой вопрос, начал умничать.

Поэтому, иди в жопу.
Доклад окончил.
__________________
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума   Ответить с цитированием
Старый 03.02.2018, 22:15   #10
Shadowfirst
 
Регистрация: 13.09.2010
Сообщений: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
[ почему у меня-то работает, что я делаю не так?
Я так понимаю сразу все заработало. И пакеты не пропадали. До этого случая у меня также все работало в других проектах. А тут испоряются на сетевом уровне(проверял создавая сырой сокет). Вернее даже на сетевом уровне не появляются, значит системой откидывается раньше.

Последний раз редактировалось Shadowfirst; 03.02.2018 в 22:20.
Shadowfirst вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
UDP пакеты Артэс Общие вопросы по программированию, компьютерным наукам 7 27.10.2016 03:15
Сервер принимает пакеты если клиент указывает неверный порт получателя UDP Yandex&Google C/C++ Сетевое программирование 0 12.02.2016 01:03
PHP и SOCKS5 (udp пакеты) LITH PHP 1 14.07.2013 12:15
Пакеты _Studentka_ Общие вопросы по Java, Java SE, Kotlin 0 04.11.2009 22:44
Пакеты benjaminfran Фриланс 7 20.02.2008 22:29


07:11.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru