crossplatform.ru

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

> QDatStream
gpepsi
  опции профиля:
сообщение 17.9.2011, 21:22
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 31.3.2010
Пользователь №: 1582

Спасибо сказали: 0 раз(а)




Репутация:   0  


Есть сокет. Попытался читать из него QDataStream.
На больших данных operator >> возвращает пустые данные.
Есть предположение, что QDataStream читает пока читается, но если данные приходят кусками, то он не успевает все вычитывать.

Есть ли что стандартное, для чтения потока? То есть читать пока читается либо пока не порвется соединение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
gpepsi
  опции профиля:
сообщение 19.9.2011, 8:34
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 31.3.2010
Пользователь №: 1582

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(BRE @ 19.9.2011, 9:28) *
А с этим я не понял, что не приходит? Сигнал disconnected?


у клиента он проходит. Но сервер не подключен к сигналу, а просто проверяет isValid - вот он проболжает возвращать true после закрытия клиента.

З.Ы. Может тогда унаследоваться от QDataStream и переопределить readRawData & writeRawData, чтоб остались все его возможности
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 19.9.2011, 9:52
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(gpepsi @ 19.9.2011, 9:34) *
у клиента он проходит. Но сервер не подключен к сигналу, а просто проверяет isValid - вот он проболжает возвращать true после закрытия клиента.

А ты состояние проверяй:
SocketState QAbstractSocket::state () const

Цитата(gpepsi @ 19.9.2011, 9:34) *
З.Ы. Может тогда унаследоваться от QDataStream и переопределить readRawData & writeRawData, чтоб остались все его возможности

А что это даст?
Тебе нужен просто цикл добавить и ждать когда придут все данные для чтения хотя-бы одной строки.
Можно в начале отправлять размер пакета и ждать пока придут все данные читая bytesAvailable, а только после этого вычитывать строку из потока.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.12.2024, 1:19