|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.02.2018, 14:49 | #1 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 13
|
Системой дропаются UDP пакеты
Есть такая ситуация. Две машины соеденины точка-точка. Одна передающая, другая принимающая. Передаются UDP пакеты. Но на принимающей присловутая функция recv принимает не все пакеты. Я знаю что такое протокол UDP, и говорить о негарантированной доставке не нужно. При этом в Wireshark пропущенные пакеты видятся и отличий кроме контрольной суммы и id нет. Передача идёт по гигабитному интерфейсу и загруженность канала в диспетчере выдаёт не больше 1.5%(полтора процента). Также проверял заполненность буфера приёма при работе программы, она не превышает размера одного пакета(1470) при имеющимся 8192. Загрузка системы при работе принимающей программы 0-3%.Вопрос соответственно какие причины могут быть того что системой пакеты просто дропаются?
|
03.02.2018, 15:59 | #2 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Прога чья? Исходник е?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
03.02.2018, 17:19 | #3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
|
03.02.2018, 18:13 | #4 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 13
|
Не достаточная так как у пакетов на сетевом уровне есть свой индетификатор пакета который индивидуальный для каждого пакета(понятное дело от 0 до 0хFFFF) и соответственно изменяется контрольная сумма загаловка. Я про эту контрольную сумму и говорил.
Последний раз редактировалось Shadowfirst; 03.02.2018 в 18:20. |
03.02.2018, 18:16 | #5 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 13
|
Что дадут исходники если речь идёт о системной функции recv которая находится в блокирующем режиме и не реагирует на некоторые пакеты, которые регистрирует Wireshark. Она работает в отдельном потоке и кроме приема этот поток ни чем не занимается.
Последний раз редактировалось Shadowfirst; 03.02.2018 в 18:19. |
03.02.2018, 20:00 | #6 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
--------- recv() и recvfrom() - это функции, т.е. они возвращают какое-то значение, которое можно проанализировать, если исходник есть. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
Последний раз редактировалось min@y™; 03.02.2018 в 20:14. |
|
03.02.2018, 20:11 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
|
03.02.2018, 20:23 | #8 | |
Пользователь
Регистрация: 13.09.2010
Сообщений: 13
|
Занят он ровно на столько на сколько нужно времени что бы положить данные в очередь и сделать wakeup тому потоку который занимается обработкой, да и то для этого есть приемный буфер устройства в котором хранится то что не прочитано. Буфер не переполняется, проверял с помощью ioctlsocket на предмет сколько данных там находится перед чтением, и это число как я писал вначале не превышало размера одного пакета.
Цитата:
|
|
03.02.2018, 20:34 | #9 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Хотя... Я хотел сначала поделиться подходящей инфой, потом мне любопытно стало, почему у меня-то работает, что я делаю не так? Задача у меня год назад была ну прям один в один как твоя - дуплекс по UDP комп <-----> устройство. Кстати, когда обмен отлаживал, тоже юзал wireshark, годная тулза. Теперь и любопытство пропало: ты вместо того, чтобы ответить на простой вопрос, начал умничать. Поэтому, иди в жопу. Доклад окончил.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
03.02.2018, 21:15 | #10 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 13
|
Я так понимаю сразу все заработало. И пакеты не пропадали. До этого случая у меня также все работало в других проектах. А тут испоряются на сетевом уровне(проверял создавая сырой сокет). Вернее даже на сетевом уровне не появляются, значит системой откидывается раньше.
Последний раз редактировалось Shadowfirst; 03.02.2018 в 21:20. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
UDP пакеты | Артэс | Общие вопросы по программированию, компьютерный форум | 7 | 27.10.2016 02:15 |
Сервер принимает пакеты если клиент указывает неверный порт получателя UDP | Yandex&Google | C/C++ Сетевое программирование | 0 | 12.02.2016 00:03 |
PHP и SOCKS5 (udp пакеты) | LITH | PHP | 1 | 14.07.2013 12:15 |
Пакеты | _Studentka_ | Общие вопросы по Java, Java SE, Kotlin | 0 | 04.11.2009 21:44 |
Пакеты | benjaminfran | Фриланс | 7 | 20.02.2008 21:29 |