Клиент Qt получил ненужные символы в дополнение к ожидаемой строке

Я реализую простой клиент на основе Qt, который отправляет по одной команде на сервер NON_QT, и сервер отвечает в ответ. Как только я получаю ответ от сервера, я использую его для других целей в зависимости от ответа

Все работает как положено. Только небольшой сбой - я получаю такие строки, как

command_accepted\u0000\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD 

В то время как спецификации сервера говорят, что ожидаемый ответ - "command_accepted". Так что я немного не понимаю, почему я получаю эти странные письма. Пожалуйста, посоветуй мне.

void ClientForNonQtServer::getResponse()
{

  QTextStream stream( sockForClient );
  QString line;
 forever
    {

   if( nextBlockSize == 0 )
     {
       if( sockForClient ->bytesAvailable() < sizeof( quint16  ) )
         {
           break;
         }
       stream >> nextBlockSize;
     }
   if( sockForClient ->bytesAvailable() < nextBlockSize )
     {
       break;
     }
     stream >> line;
     if( !line.isNull() )
       {
         qDebug()<< " stream is "<< line;
       }

    }
}

person samprat    schedule 07.09.2015    source источник
comment
Клиентская и серверная стороны могут использовать разные кодировки.   -  person Zen    schedule 07.09.2015
comment
Подскажите, пожалуйста, как заставить клиента использовать ту же кодировку. Клиент работает на UBuntu и на сервере Windows   -  person samprat    schedule 07.09.2015
comment
stackoverflow.com/questions/6357556/   -  person Zen    schedule 07.09.2015


Ответы (1)


Из документации Qt

QTextStream и QTextStream :: operator ›› (QString и str)

Читает слово из потока и сохраняет его в str, а затем возвращает ссылку на поток. Слова разделяются пробелом (т.е. все символы, для которых QChar :: isSpace () возвращает истину).

Итак, все работает как положено. Я считаю, что было бы лучше использовать QTextStream :: readLine или QTextStream :: прочтите здесь.

person Andrii    schedule 07.09.2015
comment
Похоже, проблема на стороне сервера. - person Andrii; 07.09.2015