crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в количество переданных данных
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kuzulis Дата 27.1.2014, 10:43
  ИМХО, никак. Не юзать Qt-шные сокеты.

Или перевести открытый сокет из неблокирующего режима в блокирующий (через setSockOptions(), или через платформо-зависимые ioctl()). И тогда придется этот сокет использовать в отдельном потоке потому что write() будет блокирующим. Тогда bytesWritten() будет корректно излучаться.. Как то так.. В теории. :)
call_me_Frank Дата 27.1.2014, 5:06
  окей, ясно...но поскольку интерес направлен именно в сторону количества переданных данных по сети, а не в буффер, то не могу не спросить насчет костылей - какие есть варианты получить достоверные и своевременные данные?
kuzulis Дата 26.1.2014, 21:03
  Законнектиться к сигналу QIODevice::bytesWritten(qint64).

Но если быть точным, то эта штука работает в Qt-шных сокетах некорректно, ИМХО (а может оно так и планиорвалось..).
Суть в том, что bytesWritten() излучается после успешного write(). Но это неправильно, т.к. сокеты в Qt неблокирующие, поэтому вызов write() гарантирует только факт передачи массива данных из юзер-спейса в ядро (FIFO драйвера). Таким образом реально данные могут быть еще не переданы (например, когда их очень много), но bytesWritten() уже излучится.

Поэтому - никак без костылей, ИМХО.
call_me_Frank Дата 26.1.2014, 14:09
  Как получать количество переданных сокетом байт по мере отправки? пробовал разные примеры - нужного результата не получил
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.7.2025, 22:28