QDatStream |
Здравствуйте, гость ( Вход | Регистрация )
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 |
А с этим я не понял, что не приходит? Сигнал disconnected? у клиента он проходит. Но сервер не подключен к сигналу, а просто проверяет isValid - вот он проболжает возвращать true после закрытия клиента. З.Ы. Может тогда унаследоваться от QDataStream и переопределить readRawData & writeRawData, чтоб остались все его возможности |
|
|
BRE |
19.9.2011, 9:52
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
у клиента он проходит. Но сервер не подключен к сигналу, а просто проверяет isValid - вот он проболжает возвращать true после закрытия клиента. А ты состояние проверяй: SocketState QAbstractSocket::state () const З.Ы. Может тогда унаследоваться от QDataStream и переопределить readRawData & writeRawData, чтоб остались все его возможности А что это даст? Тебе нужен просто цикл добавить и ждать когда придут все данные для чтения хотя-бы одной строки. Можно в начале отправлять размер пакета и ждать пока придут все данные читая bytesAvailable, а только после этого вычитывать строку из потока. |
|
|
Текстовая версия | Сейчас: 23.12.2024, 1:19 |