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

С++ под Linux

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

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

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

День добрый!

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

Как добиться максимальной скорости передачи?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2016, 12:56     Скорость передачи udp
Посмотрите здесь:

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

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

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

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

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

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

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

Сокеты, UDP и обеспечение требуемого потока данных. - C++ Linux
Помогите разобраться, стоит задача генерировать поток данных и передавать с определенной скорость (1 Мб/c, 16 Мб/c и т.п.) по UDP....

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

Подскажите библиотеку для работы с UDP сокетами. - C++ Linux
Поделитесь опытом, кто что использует. Желательно не тяжеловесную и простую в освоении.

Поделитесь программой приема/передачи файла - C++ Linux
Приветсвую всех! Потребовалось в программе передавать файлик по сети, поделитесь кто может прграммкой передачи файлов посети, желательно...

Остановка дочернего процесса после передачи SIGUSR2 - C++ Linux
Здравствуйте, существует проблема при выполнении кода: #include <sys/sem.h> #include <unistd.h> #include <sys/types.h> #include...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grgdvo
537 / 478 / 137
Регистрация: 02.09.2012
Сообщений: 1,398
18.11.2016, 14:46     Скорость передачи udp #2
Передавайте данные большими порциями.
boskh
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 16
18.11.2016, 19:14  [ТС]     Скорость передачи udp #3
Передаю в цикле 20-50 пакетов, если больше, то идут потери.
На сервере когда начинаю замерять время прихода между соседними пакетами, то средняя скорость поступления не более 10Мб
Humanoid
Почетный модератор
9819 / 3817 / 162
Регистрация: 12.06.2008
Сообщений: 11,434
18.11.2016, 21:45     Скорость передачи udp #4
Цитата Сообщение от boskh Посмотреть сообщение
На сервере когда начинаю замерять время прихода между соседними пакетами, то средняя скорость поступления не более 10Мб
Какой размер пакета? Например, если вы передаёте дату (пакеты по 10 байт), то 10 Мбит/с - это более 100 тысяч пакетов в секунду. На мой взгляд скорость вполне приличная. Если вы хотите получить бОльшую скорость, то вам уже выше предложили передавать данные большими порциями... например, по 1 КБ.
boskh
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 16
18.11.2016, 21:55  [ТС]     Скорость передачи udp #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);
        }
Yandex
Объявления
18.11.2016, 21:55     Скорость передачи udp
Ответ Создать тему
Опции темы

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