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