Russian Qt Forum
Июнь 16, 2024, 03:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Скорость передачи данных по сокету  (Прочитано 5040 раз)
merke
Гость
« : Октябрь 26, 2012, 12:52 »

Всем доброе время суток!

Допустим имеется клиент и сервер написанные на Qt и связанные по сокету. Располагаются они на локальной машине. Почему при различных тестах, с отправкой одного и того же объема данных, изменяется время передачи данных от клиента к серверу. с чем это может быть связанно? между тестами есть паузы, так что машина силньо не загружается. Но время постоянно то растет, то снижается. По идее время на локальной машине должно быть одно и тоже при каждом тесте с одними и теми же данными. Или я ошибаюсь?
Записан
Andrew Vladoff
Гость
« Ответ #1 : Октябрь 26, 2012, 16:45 »

Скорость передачи зависит от размера пересылаемых пакетов. Если нужно добиться необходимой скорости передачи, от возможно следует передавать данные в несколько потоков. Я давно уже как то экспериментировал с передачей по UDP, у меня получалось одним потоком передавать не более 300Мбит/сек, а 4 потока 800-900 Мбит
Записан
merke
Гость
« Ответ #2 : Октябрь 26, 2012, 19:53 »

Скорость передачи зависит от размера пересылаемых пакетов. Если нужно добиться необходимой скорости передачи, от возможно следует передавать данные в несколько потоков. Я давно уже как то экспериментировал с передачей по UDP, у меня получалось одним потоком передавать не более 300Мбит/сек, а 4 потока 800-900 Мбит

а можно подробнее про потоки?
Записан
Serr500
Гость
« Ответ #3 : Октябрь 26, 2012, 21:41 »

Почему при различных тестах, с отправкой одного и того же объема данных, изменяется время передачи данных от клиента к серверу. с чем это может быть связанно?
С тем, что время доставки пакета не регламентировано. Когда диспетчер решит передать пакет, тогда и передаст. Время задержки зависит от многих факторов и точному вычислению не поддаётся. Можно говорить только о средних значениях. И для полноты картины хотелось бы узнать какой объём данных передаётся, какой используется протокол (TCP, UDP,...), насколько варьируется время?
Записан
Andrew Vladoff
Гость
« Ответ #4 : Октябрь 27, 2012, 00:14 »

Почему при различных тестах, с отправкой одного и того же объема данных, изменяется время передачи данных от клиента к серверу. с чем это может быть связанно?
С тем, что время доставки пакета не регламентировано. Когда диспетчер решит передать пакет, тогда и передаст. Время задержки зависит от многих факторов и точному вычислению не поддаётся. Можно говорить только о средних значениях. И для полноты картины хотелось бы узнать какой объём данных передаётся, какой используется протокол (TCP, UDP,...), насколько варьируется время?

Прежде всего не совсем понятно чего хочет добиться автор: скорости передачи данных или передачу данных с заданной скоростью?
Записан
Andrew Vladoff
Гость
« Ответ #5 : Октябрь 27, 2012, 00:29 »

а можно подробнее про потоки?

Я в своем приложении создавал несколько потоков. Один поток для приема данных с сетевого интерфейса (у вас может быть это чтение из файла). И несколько потоков (сокетов) для передачи данных. Обмен данных происходит через FIFO. т.е. принемник принимает некоторый блок данных, определяет в какое FIFO из передающих потоков их записать.
Таким образом у меня получалось принимать даные со скоростью около 1 Гб и транслировать их по сети далее.

P.S. Код не совем на Qt, но на С++ где то есть на работе, могу поискать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 20.