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

С++ под Linux

Войти
Регистрация
Восстановить пароль
 
boskh
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 16
#1

Скорость передачи udp - C++ Linux

18.11.2016, 12:56. Просмотров 493. Ответов 4
Метки нет (Все метки)

День добрый!

Написал свое первое простое клиент-серверное приложение (клиент отправляет дату, используя udp в качестве транспорта) и столкнулся с проблемой: при отправке с клиента пакетов максимальная скорость передачи составляет несколько Мб/с, поведение аналогичное у пинга (ping -i 0 -s 1300 x.x.x.x), хотя проверка iperf показывает на два порядка выше.
http://www.screencapture.ru/file/312CB0d9

Как добиться максимальной скорости передачи?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2016, 12:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Скорость передачи udp (C++ Linux):

UDP и connect - C++ Linux
Разбираюсь с UDP протоколом, нагуглил кучку примеров, и несколько раз встречал connect() на UDP сокет. Зачем так делают, ведь у UDP нет...

UDP, проверка CRC - C++ Linux
По стандарту CRC header'а проверяется на уровне IP, а вот CRC данных может проверятся или игнорироваться в зависимости от настроек. По...

Сетевой чат UDP - C++ Linux
Пишу чат UDP, в процессе возникла ошибка, с которой не могу справиться. int main() { int sock; struct sockaddr_in...

UDP многопользовательское приложение - C++ Linux
Прошу помочь разобраться - в чём может быть проблема. Хоть эта тема неоднократно поднималась на этом форуме - решения я так и не нашел. ...

Входной буфер UDP сокета - C++ Linux
Здравствуйте. Скажите, пожалуйста, существует ли отдельная функция, отвечающая за очищение входного буфера UDP сокета от всех, скопившихся...

UDP Broadcast Network is unreachable - C++ Linux
Пытаюсь отправить широковещательный пакет, но все время выдает Network is unreachable Сначала передаются направленные UDP пакеты и все...

4
grgdvo
561 / 499 / 146
Регистрация: 02.09.2012
Сообщений: 1,479
18.11.2016, 14:46 #2
Передавайте данные большими порциями.
0
boskh
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 16
18.11.2016, 19:14  [ТС] #3
Передаю в цикле 20-50 пакетов, если больше, то идут потери.
На сервере когда начинаю замерять время прихода между соседними пакетами, то средняя скорость поступления не более 10Мб
0
Humanoid
Почетный модератор
9846 / 3743 / 168
Регистрация: 12.06.2008
Сообщений: 11,480
18.11.2016, 21:45 #4
Цитата Сообщение от boskh Посмотреть сообщение
На сервере когда начинаю замерять время прихода между соседними пакетами, то средняя скорость поступления не более 10Мб
Какой размер пакета? Например, если вы передаёте дату (пакеты по 10 байт), то 10 Мбит/с - это более 100 тысяч пакетов в секунду. На мой взгляд скорость вполне приличная. Если вы хотите получить бОльшую скорость, то вам уже выше предложили передавать данные большими порциями... например, по 1 КБ.
0
boskh
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 16
18.11.2016, 21:55  [ТС] #5
Размер я задаю в аргументах при запуске клиентского приложение 1000-1300 байт

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Sending bucket of packets.
    for( int s=0; s<Count; s++ ) {
        randomizePktBuf();
        CPHp(pktBuf)->HDR = HDR_VAL;
        CPHp(pktBuf)->ID = ID;
        CPHp(pktBuf)->No  = s;
        CPHp(pktBuf)->Count = Count;
        CPHp(pktBuf)->PacketSize = pktLen;
        *(uint64_t*)(pktBuf+pktLen-sizeof(uint64_t)) = FTR_VAL;
 
        if( send( skt, pktBuf, pktLen, 0 ) != pktLen ) {
        perror( "Can not send data" );
        exit(7);
        }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2016, 21:55
Привет! Вот еще темы с ответами:

UDP и физическое отсоединение кабеля - C++ Linux
Есть программа посылающая пакету UDP на уд.хост, как программно отследить физическое отсоединение кабеля для того что бы прервать отправку...

Функция передачи файла - C++
Помогите, пожалуйста. Как написать функцию передачи файла на iOS, девайс джейлбрейкнут, iTunes установлен.

Принять по UDP multicast медиа-поток MPEG2-TS - C++ Linux
Прочитал про сокеты и как подключиться к multicast group. #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...

UDP чат без использования стандартных компонентов - C++
Здраствуйте! Срочно нужен UDP чат но БЕЗ ИСПОЛЬЗОВАНИЯ стандартных компонентов... Кто может подсказать где можно найти, или какую нибуть...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
18.11.2016, 21:55
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru