QDatStream |
Здравствуйте, гость ( Вход | Регистрация )
QDatStream |
gpepsi |
17.9.2011, 21:22
Сообщение
#1
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть сокет. Попытался читать из него QDataStream.
На больших данных operator >> возвращает пустые данные. Есть предположение, что QDataStream читает пока читается, но если данные приходят кусками, то он не успевает все вычитывать. Есть ли что стандартное, для чтения потока? То есть читать пока читается либо пока не порвется соединение. |
|
|
gpepsi |
19.9.2011, 7:51
Сообщение
#2
|
Студент Группа: Участник Сообщений: 73 Регистрация: 31.3.2010 Пользователь №: 1582 Спасибо сказали: 0 раз(а) Репутация: 0 |
Можно пробовать читать из потока и если вернулась пустая строка, то ждать прихода следующего пакета и пробовать читать снова. ну тогда нужно держать свой буфер накопления, а хотелось возложить это на QDataStream. Ему никак нельзя сказать, чтоб он читал покак не придет все ? Можно писать raw-строки без использования QDataStream и в качестве конца строки использовать "\r\n" (как это делается в http, ftp, ...). Тогда каждую порцию строку можно дописывать в буфер и контролировать маркер конца строки, если он получен, то вырезаем ее из буфера и обрабатываем. ну тоже самое - самому контролировать. Просто я думал, что для TCP это сделано (какой-нибудь QTcpStream) P.S. А что по поводу закрытия сокетов ? Сообщение отредактировал gpepsi - 19.9.2011, 8:34 |
|
|
Текстовая версия | Сейчас: 23.12.2024, 1:27 |