Russian Qt Forum
Ноябрь 23, 2024, 19:10
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Скорость передачи данных по сокету
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Скорость передачи данных по сокету (Прочитано 5119 раз)
merke
Гость
Скорость передачи данных по сокету
«
:
Октябрь 26, 2012, 12:52 »
Всем доброе время суток!
Допустим имеется клиент и сервер написанные на Qt и связанные по сокету. Располагаются они на локальной машине. Почему при различных тестах, с отправкой одного и того же объема данных, изменяется время передачи данных от клиента к серверу. с чем это может быть связанно? между тестами есть паузы, так что машина силньо не загружается. Но время постоянно то растет, то снижается. По идее время на локальной машине должно быть одно и тоже при каждом тесте с одними и теми же данными. Или я ошибаюсь?
Записан
Andrew Vladoff
Гость
Re: Скорость передачи данных по сокету
«
Ответ #1 :
Октябрь 26, 2012, 16:45 »
Скорость передачи зависит от размера пересылаемых пакетов. Если нужно добиться необходимой скорости передачи, от возможно следует передавать данные в несколько потоков. Я давно уже как то экспериментировал с передачей по UDP, у меня получалось одним потоком передавать не более 300Мбит/сек, а 4 потока 800-900 Мбит
Записан
merke
Гость
Re: Скорость передачи данных по сокету
«
Ответ #2 :
Октябрь 26, 2012, 19:53 »
Цитата: Andrew Vladoff от Октябрь 26, 2012, 16:45
Скорость передачи зависит от размера пересылаемых пакетов. Если нужно добиться необходимой скорости передачи, от возможно следует передавать данные в несколько потоков. Я давно уже как то экспериментировал с передачей по UDP, у меня получалось одним потоком передавать не более 300Мбит/сек, а 4 потока 800-900 Мбит
а можно подробнее про потоки?
Записан
Serr500
Гость
Re: Скорость передачи данных по сокету
«
Ответ #3 :
Октябрь 26, 2012, 21:41 »
Цитата: Александр от Октябрь 26, 2012, 12:52
Почему при различных тестах, с отправкой одного и того же объема данных, изменяется время передачи данных от клиента к серверу. с чем это может быть связанно?
С тем, что время доставки пакета не регламентировано. Когда диспетчер решит передать пакет, тогда и передаст. Время задержки зависит от многих факторов и точному вычислению не поддаётся. Можно говорить только о средних значениях. И для полноты картины хотелось бы узнать какой объём данных передаётся, какой используется протокол (TCP, UDP,...), насколько варьируется время?
Записан
Andrew Vladoff
Гость
Re: Скорость передачи данных по сокету
«
Ответ #4 :
Октябрь 27, 2012, 00:14 »
Цитата: Serr500 от Октябрь 26, 2012, 21:41
Цитата: Александр от Октябрь 26, 2012, 12:52
Почему при различных тестах, с отправкой одного и того же объема данных, изменяется время передачи данных от клиента к серверу. с чем это может быть связанно?
С тем, что время доставки пакета не регламентировано. Когда диспетчер решит передать пакет, тогда и передаст. Время задержки зависит от многих факторов и точному вычислению не поддаётся. Можно говорить только о средних значениях. И для полноты картины хотелось бы узнать какой объём данных передаётся, какой используется протокол (TCP, UDP,...), насколько варьируется время?
Прежде всего не совсем понятно чего хочет добиться автор: скорости передачи данных или передачу данных с заданной скоростью?
Записан
Andrew Vladoff
Гость
Re: Скорость передачи данных по сокету
«
Ответ #5 :
Октябрь 27, 2012, 00:29 »
Цитата: Александр от Октябрь 26, 2012, 19:53
а можно подробнее про потоки?
Я в своем приложении создавал несколько потоков. Один поток для приема данных с сетевого интерфейса (у вас может быть это чтение из файла). И несколько потоков (сокетов) для передачи данных. Обмен данных происходит через FIFO. т.е. принемник принимает некоторый блок данных, определяет в какое FIFO из передающих потоков их записать.
Таким образом у меня получалось принимать даные со скоростью около 1 Гб и транслировать их по сети далее.
P.S. Код не совем на Qt, но на С++ где то есть на работе, могу поискать.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...