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

С++ для начинающих

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

Передача данных - C++

23.08.2013, 13:32. Просмотров 403. Ответов 5
Метки нет (Все метки)

Здравствуйте! Подскажите, пожалуйста, как организовать передачу данных, допустим через сокет, с заданной скоростью V_out, например, 15Мб в секунду? Отправляю я пакеты длины 188 байт. Но скорее всего отправлять буду не по одному, а по несколько штук. Предположим, что кол-во пакетов в сообщении n. Как правильно организовать такую отправку в реальном времени?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2013, 13:32     Передача данных
Посмотрите здесь:

C++ Передача данных в функции
C++ Передача данных
C++ Передача данных по значению и по ссылке
Передача данных из функции C++
C++ передача данных между потоками
C++ Передача данных в функцию
Передача данных в system() C++
Передача данных в функцию C++
C++ Передача данных в функцию
C++ Передача данных между классами
C++ Передача данных в SD карту
Передача данных и сортировка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
Эксперт С++
14908 / 6726 / 1059
Регистрация: 02.05.2013
Сообщений: 11,008
Завершенные тесты: 1
23.08.2013, 16:04     Передача данных #2
Цитата Сообщение от Nastik-kum Посмотреть сообщение
Подскажите, пожалуйста, как организовать передачу данных, допустим через сокет, с заданной скоростью V_out, например, 15Мб в секунду?
Никак. Потому что принимающая сторона может быть не в состоянии читать
данные с такой скоростью.

Цитата Сообщение от Nastik-kum Посмотреть сообщение
Отправляю я пакеты длины 188 байт. Но скорее всего отправлять буду не по одному, а по несколько штук. Предположим, что кол-во пакетов в сообщении n. Как правильно организовать такую отправку в реальном времени?
Пакеты, сообщения... Это все неверно.
Если вы работаете с сокетами, на уровне TCP, там нет таких понятий как "пакет" или "сообщение".
Есть лишь поток байт, возможно разбитый на куски неопределенного размера.
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
23.08.2013, 16:21     Передача данных #3
если отправлять значительно больше одного байта за одну итерацию, т.е скорость будет стремиться к пропускной скорости сети (конечно же если с другой стороны читают), если вам необходимо ограничить скорость, то попробуйте примитивно ограничить скорость отправления, например если отправлять по 1024 байта, то отправив 1024*15 раз остановитесь на определенный промежуток времени )
который равен (1 сек минус время отправления тех 1024*15*1024 байт) вот только есть небольшая проблема с засечением времени хД
Nastik-kum
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 16
23.08.2013, 16:24  [ТС]     Передача данных #4
Я работаю с протоколом UDP. Данные передаю датаграммами. Мне необходимо установить определенную скорость отправки датаграмм. Если приемник не будет успевать - я ее уменьшу, но для этого нужно понять как это сделать теоретически. Так сказать составить алгоритм для абстрактных данных.
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
23.08.2013, 16:26     Передача данных #5
Цитата Сообщение от Nastik-kum Посмотреть сообщение
Если приемник не будет успевать
в UDP вы этого не узнаете ))
Nastik-kum
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 16
23.08.2013, 16:38  [ТС]     Передача данных #6
Проблема в том, что у меня программа отправляет то, что приняла. Соответственно идет работа с критическим ресурсом, кроме того, принятые данные еще и обрабатывать надо. В итоге выходит, что принимаю я быстрее, чем отправляю, хотя работаю в разных потоках. Сейчас планирую вынести обработку в отдельный поток и он должен по идее независимо работать. Однако тогда у меня начинает слишком часто передавать. Вот я пытаюсь придумать алгоритм, по которому исходя из заданной скорости отправлять определенное кол-во датаграмм.

PS: Знаю, что объясняю сумбурно, но проблема в том, что я как раз не понимаю как это сделать нормально =(
Yandex
Объявления
23.08.2013, 16:38     Передача данных
Ответ Создать тему
Опции темы

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