1

データを文字列として提供する関数があり、関数はそれを QByteArray に配置し、ソケットはこの配列をホストに転送します。私がしようとすると

_strdata = "80200000"

このデータは 16 進データです。転送されたデータは、wireshark では 0x80200000 である必要があります。

私の試み:

void DataTransmitter(const QString & _strdata)
{
   QByteArray myData = QByteArray::fromHex(_strdata.toLatin1());

   PUDPSocket->writeDatagram(myData.data(), myData.size(), host, port);
}

出力: Wireshark: 不正なパケット

void DataTransmitter(const QString & _strdata)
{
    QString d1,d2,d3,d4;
    d1.append(_strdata[0]);d1.append(_strdata[1]);
    d2.append(_strdata[2]);d2.append(_strdata[3]);
    d3.append(_strdata[4]);d3.append(_strdata[5]);
    d4.append(_strdata[6]);d4.append(_strdata[7]);

    QByteArray data;
    data.append((char) d1.toInt());
    data.append((char) d2.toInt());
    data.append((char) d3.toInt());
    data.append((char) d4.toInt());

    PUDPSocket->writeDatagram(data.data(),data.size(),host,port);
    d1.clear();
    d2.clear();
    d3.clear();
    d4.clear();
}

出力: wireshark: 不正なパケットが再び発生しました

データを「80200001」に変更すると、wireshark: 50:14:00:01

あなたの提案が必要です。

ありがとう、カン

4

1 に答える 1