データを文字列として提供する関数があり、関数はそれを 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
あなたの提案が必要です。
ありがとう、カン