|
5Qter豆
qint64 len = socket->bytesAvailable();
qDebug()<<"len"<<len<<endl; //运行后60
QByteArray ba=socket->readAll();
m_recvBuf=ba.data(); //此处何意??
qDebug()<<tr("m_recvBuf:")<<m_recvBuf<<endl;//运行后此处显示Uz
int realLen =sizeof(m_recvBuf);//获取读到数据的长度,留作数据解析用,判断数据包的类型
qDebug()<<tr("m_recvBuf:")<<ba.toHex().toUpper()<<endl;//一共60个字节的数据 557A10003500......4F
if ( realLen > 0 ) {
procData( realLen );//进行数据解析
qDebug()<<"realLen"<<realLen<<endl; //运行后此处是4
}
void MyClient::procData( int len ){
if ( !m_isPkgHdrRecieved ) //之前定义为false
{ m_isPkgHdrRecieved = (m_recvBuf[0] == 0x55 && m_recvBuf[1] == 0x7A)
|| ( (byte)m_recvBuf[0] == 0x35 && (byte) m_recvBuf[1] == 0x00 )
|| ( (byte)m_recvBuf[0] == 0x00 && (byte)m_recvBuf[1] == 0x35 //byt在此何意 为啥都是0 或者1,收到包头的数据是55 7A 10 00 35 00 此处本意是验证包头正确 为什么要byte m_recvbuf? && (byte)m_recvBuf[2] == 0x00);
}
m_isPkgHdrRecieved=false;
qDebug()<<"m_pkgBuf"<<m_pkgBuf;
//为什么运行后显示0xa0017f8
//m_pkgBuf = new byte[2048]
qDebug()<<"m_dataCount"<<m_dataCount; //0
qDebug()<<"len"<<len<<endl;//4
memcpy( m_pkgBuf+ m_dataCount , m_recvBuf, len);//??这个函数qt有吗?
m_dataCount += len;
qDebug()<<"the next is procvalpkg"<<endl;
qDebug()<<"m_recvBuf"<<m_recvBuf<<endl; //Uz
qDebug()<<"m_dataCount"<<m_dataCount<<endl;//4??
}
|
最佳答案
查看完整内容
这个是13年10月29日12时30分10秒吗?如果不是,你这几个数据怎么得到是,是toHex()后得到的吗?把代码贴出来。
|