Теперь сервер (реализованный с Java) будет посылать некоторые потоковые данные мне, мой код, как показано ниже:Как читать полные данные в QTcpSocket?
connect(socket, SIGNAL(readyRead()), this, SLOT(read_from_server()));
в read_from_server()
:
{
while (socket->bytesAvailable())
{
QString temp = socket->readAll();
}
}
, но я считаю, что даже сервер послал мне строка с несколькими символами, данные усекаются, и моя функция вызывается дважды, поэтому temp
- это никогда не завершенные данные, которые я хочу.
Если сервер отправляет мне более длинную строку, моя функция может быть вызвана три или более раз, что затрудняет мне знать, когда данные передаются полностью.
Так кто-нибудь может сказать мне, как полностью получить данные легко, без так много шагов беспокоиться? Простите, если это дублируется с некоторыми вопросами, я не могу получить ответы на них. Большое спасибо!
О «2», считая фигурные скобки, будет проблемой, если объект содержит строки с фигурными скобками.Лучше попробуйте правильно разобрать его и предположите, что он не является полным, если он терпит неудачу. –
Я полностью согласен, вам нужно принять это во внимание и также проверять строки, хотя я упоминал использование QJsonDocument для проверки данных. Спасибо, что выделили это: 0) – TheDarkKnight
@ Merlin069 Спасибо за ваш опыт! – yakiang