QT UDP: отправка сообщения на клиент
Передо мной стоит задача переслать сообщение формата QString с сервера UDP на клиент. Однако при передаче мной сообщение оно приходит не полностью. Мне кажется, что информация теряется при переводе из QString в QByteArray и обратно. Поэтому на сервере пробую это зафиксировать с помощью QMessage Box. Посмотрите, пожалуйста, что я делаю не так:
QString myData = "Message";
QByteArray myDatagram;
myDatagram+=myData;
QDataStream out(&myDatagram, QIODevice::WriteOnly);
out << myDatagram;
my_udp->writeDatagram(myDatagram, QHostAddress::LocalHost, 2424);
myData = QString::fromStdString(myDatagram.toStdString());
QMessageBox::information(this, "..", myData);
Так, например, при попытке переслать слово "Message", отправляется только "age". Или же "o, world!" для "Hello, world!". Пропадают первые три символа.
Ответы (1 шт):
Автор решения: InTar
→ Ссылка
> QString myData = "Message";
> QByteArray myDatagram;
> myDatagram+=myData; //тут Вы напрямую добавляете строку в массив
> QDataStream out(&myDatagram, QIODevice::WriteOnly); //тут Вы создаете поток для записи в массив
> out << myDatagram; // тут вы в поток пытаетесь записать массив, т.е. записываете массив в себя
Наверно нужно сделать так:
QString myData = "Message";
ByteArray myDatagram;
QDataStream out(&myDatagram, QIODevice::WriteOnly);
out << myData;