文本协议的程序
在TestMessage类中
1、使用QByteArray封装协议
类型、长度 ==> ASCII码,4字节
数据 ==> UTF-8编码
//QString类型,转为const char* 类型
ba.append(type.toStdString().c_str(), 4); ASCII码,4字节
ba.append(len.toStdString().c_str(), 4); ASCII码,4字节
不同的编码都放入QByteArray字节数组中。
长度len是数据转为utf-8后的长度。
QString类中提供 toUtf8()函数,QString也能将Utf-8解码。
在TestaMsgAssemble类中
1、assemble(...)装配函数
形参类型const char* , 直接将QByteArray类型对象传入,正确运行。或者使用ba.data()转为const char*
2、makeMessage()函数
类中用 QByteArray m_data; 而不是QString类型,在该函数中有一个条件判断,用到了
if( m_data.length() == m_length )
{
ret = new TestMessage(m_type, QString(m_data));
}
在tcpServer类中
1、使用QMap<QTcpSocket*, TestMsgA