Форум программистов, компьютерный форум CyberForum.ru

UDP отправка и прием пакетов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Bmg113
201 / 147 / 5
Регистрация: 14.03.2013
Сообщений: 784
21.02.2014, 12:22     UDP отправка и прием пакетов #1
Вообщем такая ситуация.
Отправляю пакеты объемом по 1 кБайту, пачками по 32 через определенное время (маленькое).
Вообщем около 8000 пакетов уходит за 5 секунд. А приходят за 7 секунд.
(Это если на обоих настроен Broadcast, соединены компьютеры через свич-тупой свич)
Забавно что на приеме только подсчитывается количество пакетов которые реально дошли(по размеру), тобишь приват слот по приему не загружен.

Поставил явные ip адреса и вот что получилось. Приходит за 5 секунд, но приходит 3000 из 8000.
В первом случае потери составляли около 3 пакетов.

Подскажите что я делаю не так? Если нужен пример, то сейчас сделаю простенький без всяких лишних функций.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2014, 12:22     UDP отправка и прием пакетов
Посмотрите здесь:

C++ UDP Client
C++ Прием врача
C++ Шифрование трафика (пакетов)
C++ Server Socket и прием данных
C++ Прием MPI_Bcast
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Вованя
116 / 116 / 46
Регистрация: 20.02.2014
Сообщений: 411
21.02.2014, 13:10     UDP отправка и прием пакетов #2
А как вы посчитали кол-во пришедших пакетов то?
Какой бы размер буфера вы не указали бы функции sendto или recvfrom, IP разбивает дейтаграммы на какой-то свой размер, затем канальный уровень разбивает это все на кадры, не превышающие размеры MTU, затем это все обратно собирается на удаленной машине, поэтому что конкретно вы считаете за пакеты?
Если, я, конечно же, не ошибаюсь.
Bmg113
201 / 147 / 5
Регистрация: 14.03.2013
Сообщений: 784
21.02.2014, 13:36  [ТС]     UDP отправка и прием пакетов #3
Цитата Сообщение от Вованя Посмотреть сообщение
А как вы посчитали кол-во пришедших пакетов то?
Какой бы размер буфера вы не указали бы функции sendto или recvfrom, IP разбивает дейтаграммы на какой-то свой размер, затем канальный уровень разбивает это все на кадры, не превышающие размеры MTU, затем это все обратно собирается на удаленной машине, поэтому что конкретно вы считаете за пакеты?
Если, я, конечно же, не ошибаюсь.
Я в пакет записываю как одну переменную размер всего пакета не считая шапки. По нему и слежу.

Добавлено через 8 минут
А можно как нибудь расширить буффер? что бы больше пакетов влезало за раз?

Добавлено через 11 минут
Нашел вот такую вещь (rx_que_size) но не понимаю как ей воспользоваться в Qt.
Вованя
116 / 116 / 46
Регистрация: 20.02.2014
Сообщений: 411
21.02.2014, 13:37     UDP отправка и прием пакетов #4
Честно говоря, не очень понимаю в чем, собственно, вопрос.
Вы уж приведите пример, как посылаете и принимаете.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
21.02.2014, 13:49     UDP отправка и прием пакетов #5
А ты учитываешь, что UDP вообще не дает никаких гарантий доставки? Поэтому будет ли принят из 8000 пакетов только один, сто или все 8000 - это все нормальные случаи. Разработчик должен учитывать их обязательно. Даже если не будет принято ни одного пакета - это также нормальный случай.
Bmg113
201 / 147 / 5
Регистрация: 14.03.2013
Сообщений: 784
21.02.2014, 14:52  [ТС]     UDP отправка и прием пакетов #6
Цитата Сообщение от Вованя Посмотреть сообщение
Честно говоря, не очень понимаю в чем, собственно, вопрос.
Вы уж приведите пример, как посылаете и принимаете.
Сейчас постораюсь, просто убирать надо много что бы было попроще.

Цитата Сообщение от CheshireCat Посмотреть сообщение
А ты учитываешь, что UDP вообще не дает никаких гарантий доставки? Поэтому будет ли принят из 8000 пакетов только один, сто или все 8000 - это все нормальные случаи. Разработчик должен учитывать их обязательно. Даже если не будет принято ни одного пакета - это также нормальный случай.
Согласен, но когда я нормирую пакеты (посылаю 1 пакет 1 мс) то все доходит. но за 8 секунд, а мне надо за 5. Вроде как можно у сетевой карты увеличить буфер приема и тогда они будут меньше теряться.

Добавлено через 5 минут
Я немного работал с pcap_t, следил за трафиком по портам и путям. Так вот может как то там можно увеличить буфер приема? Или в самом QUDPSocket можно это сделать??

Добавлено через 44 минуты
Сделал отдельно проекты по приему и передаче 8000 по 1 кбайту ииииии все дошли - спасибо всем, буду глядеть где я схимичил.

Добавлено через 3 минуты
А вот новые новости:
1). Кидал по 8 пакетов (каждый по 1 кбайту) в 1 мс. Дошли все. (Общее время отправки 1 секунда)
2). Кидал по 32 пакета (каждый по 1 кбайт) в 15 мс. Половина не дошла. (Общее время отправки 3,7 секунды)
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
21.02.2014, 15:07     UDP отправка и прием пакетов #7
есть такой метода setsockopt описание тут
попробуйте ей поиграться
Bmg113
201 / 147 / 5
Регистрация: 14.03.2013
Сообщений: 784
21.02.2014, 15:42  [ТС]     UDP отправка и прием пакетов #8
Цитата Сообщение от aLarman Посмотреть сообщение
есть такой метода setsockopt описание тут
попробуйте ей поиграться
Спасибо но надо под Linux.
Решил проблему так. 32 пакета отправляю по 8 с задержкой в 3 мс укладываюсь и потерь почти нет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2014, 15:44     UDP отправка и прием пакетов
Еще ссылки по теме:

Прием, передача и сравнение последовательности Баркера C++
Перехват пакетов в онлайн-игре C++
Быстрая передача udp пакетов C++

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

Или воспользуйтесь поиском по форуму:
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
21.02.2014, 15:44     UDP отправка и прием пакетов #9
Цитата Сообщение от Bmg113 Посмотреть сообщение
Спасибо но надо под Linux.
оно и там есть тык
Yandex
Объявления
21.02.2014, 15:44     UDP отправка и прием пакетов
Ответ Создать тему
Опции темы

Текущее время: 05:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru