1
我有一個函數,它提供數據作爲字符串和函數把它放到QByteArray和Socket將這個數組傳遞給主機。當我嘗試Qt QString十六進制值到QByteArray
_strdata = "80200000"
這個數據是十六進制數據。在wireshark上轉移數據應該是0x80200000。
我嘗試:
void DataTransmitter(const QString & _strdata)
{
QByteArray myData = QByteArray::fromHex(_strdata.toLatin1());
PUDPSocket->writeDatagram(myData.data(), myData.size(), host, port);
}
OUTPUT: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();
}
OUTPUT:Wireshark的:畸形報文再次
當我改變數據「80200001」 Wireshark的:50 :14:00:01
我需要你的建議,
謝謝 能
嘗試了您的代碼,它發送數據時,其80200001。但當我嘗試發送80200000 wireshark說畸形的數據包。 – mcan
QByteArray應該處理數據流中的'\ 0'。 wireshark會顯示格式錯誤的數據包包含的數據嗎? – drescherjm
wireshark輸出:Internet協議版本4,Src: 192.168.0.202(192.168.0.202),Dst:192.168.0.80(192.168.0.80)用戶數據報協議,Src端口:hpvmmagent(1125),Dst端口:danf-ak2( 1041) [格式錯誤的數據包:TFTP]專家信息(錯誤/格式錯誤):格式錯誤的數據包(發生例外)消息:格式錯誤的數據包(發生例外)嚴重性級別:錯誤組:格式錯誤 – mcan