![]() |
|
|
![]()
|
|
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Возник следующий вопрос
Есть соединение по Ssl протоколу, через объект класса QSslSocket. Как и у любого сокета, операционная система создает буфер, который САМА наполняет и оповещает уже когда данные находятся в нем целиком. Я правильно понимаю? Передача клиенту происходит по тому же принципу, данные записываются в этот буфер, а потом операционка пытается уже передать Вопрос: существует ли возможность узнать с какой скоростью данные передаются клиенту и от него? Заранее благодарен за помощь? |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Ладно, а чем стандартный метод не устраивает? Генерим мусора на пару гигов и начинаем передавать. Скажем каждые 20 мегабайт вычисляем прошедшее время с момента старта куска. 100 мегабитка в любом случае не сможет прокачать 20 мегов в секунду.
|
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Под задачку не подходит....
Я хотел добиться того, чтобы сервер, который может обрабатывать множество таких соединений, ну допустим по 32 на поток, мог контроллировать подключившихся пользователей. Может это и бессмысленно, но в nginx есть параметр, который задает минимальную скорость обмена информацией с пользователем.... SABROG, не знаешь, как создатель nginx там этого добился, я про контроль? |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Очень просто. Заставь буфера приема заполниться. Не читай из них ничего. Ты можешь получать сигнал, что данные пришли в буффер, но никто тебя насильно не заставляет их считывать. На клиентской стороне сокеты будут "подвисать" в ожидании сервера, когда ты позволишь прислать им новые данные путем чтения того, что пришло в буффер. Вообще это в теории. Как поведет себя Qt сказать сложно. Это сообщение отредактировал(а) SABROG - 17.2.2009, 21:28 |
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Ну это в принципе логично.
А скорость nginx получается по отправке своих данных измеряет примерную? То есть отправил пакеты, прикинул насколько быстро они должны были быть отправлены и по таймеру проверяет, завершена операция или нет... Так получается? |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Ну write() тоже ведь возвращает сразу управление и пользователь ждет сигнала bytesWritten, т.ч. eventloop позволит по таймеру обновлять информацию скажем каждую секунду. А вообще есть example/torrent, там скорость показывается.
|
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
ок, спасибо
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |