Hallo iedereen,
Ik ben bezig met een spel te maken over het netwerk. Ik stuur de commando's door via tcp. Nu heb ik gemerkt dat ik dit beter via udp doe omdat bij grotere hoeveelheden data de client zeer traag wordt omdat hij alle data MOET ontvangen in tegenstelling tot udp. Nu zit ik vast met het volgende. Ik zet mijn variabelen in een Qdatastream en zet deze dan in een Qbytearray. Dit blijft hetzelfde bij tcp en udp. Het verschil zit echter in het ontvangen. Ik vind niet hoe ik de data terug in een datastream kan steken bij als ik de data ontvang langs de kant van de ontvanger.
Bij tcp deed ik dit als volgende:
ontvanger tcp
Dit werkte allemaal perfect.
Dit doe ik om data te verzenden bij udp. Datastream heb ik in bytearray gestoken.
Nu weet ik echter niet hoe ik de data terug moet extraheren.
Mijn data zit nu in datagram.data(). Nu vraag ik me af hoe ik de datastream er uit kan halen.
QDataStream in(udpsocket) werkt niet. Omdat de data moet gelezen worden en op deze manier wordt het blijkbaar niet gelezen. Kan iemand me helpen?
Alvast bedankt
Ik ben bezig met een spel te maken over het netwerk. Ik stuur de commando's door via tcp. Nu heb ik gemerkt dat ik dit beter via udp doe omdat bij grotere hoeveelheden data de client zeer traag wordt omdat hij alle data MOET ontvangen in tegenstelling tot udp. Nu zit ik vast met het volgende. Ik zet mijn variabelen in een Qdatastream en zet deze dan in een Qbytearray. Dit blijft hetzelfde bij tcp en udp. Het verschil zit echter in het ontvangen. Ik vind niet hoe ik de data terug in een datastream kan steken bij als ik de data ontvang langs de kant van de ontvanger.
Bij tcp deed ik dit als volgende:
code:
1
2
3
| QDataStream out(&data, QIODevice::ReadWrite); out << QString("cor") << quint8(curX) << quint8(curY); send_data(data); |
ontvanger tcp
code:
1
2
| QDataStream in(tcp_socket); in >> id_action >> number >> number1; |
Dit werkte allemaal perfect.
Dit doe ik om data te verzenden bij udp. Datastream heb ik in bytearray gestoken.
code:
1
2
3
| udpsocket->writeDatagram(datagram.data(), datagram.size(), QHostAddress::Broadcast, 45454); qDebug()<<"udp data verzonden"; |
Nu weet ik echter niet hoe ik de data terug moet extraheren.
code:
1
2
3
4
| while (udpSocket->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(udpSocket->pendingDatagramSize()); udpSocket->readDatagram(datagram.data(), datagram.size()); |
Mijn data zit nu in datagram.data(). Nu vraag ik me af hoe ik de datastream er uit kan halen.
QDataStream in(udpsocket) werkt niet. Omdat de data moet gelezen worden en op deze manier wordt het blijkbaar niet gelezen. Kan iemand me helpen?
Alvast bedankt