balloonwj / flamingo

flamingo 一款高性能轻量级开源即时通讯软件

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

数据传输协议的包头部分为什么不需要考虑byte order?

Irlyue opened this issue · comments

您好,我最近在学习这款开源框架的源代码。有个疑问是为什么数据传输协议里的包头部分可以直接拷贝内存而不需要转换字节序?

服务端代码:ChatSession::onLoad()

//取包头信息
chat_msg_header header;
memcpy(&header, pBuffer->peek(), sizeof(chat_msg_header));

客户端代码:IUSocket::Login()

msg header;
memset(&header, 0, sizeof(header));
header.compressflag = 1;
header.originsize = outbuf.length();
header.compresssize = strDestBuf.length();

//std::string strX;
//if (!::UncompressBuf(strDestBuf, strX, header.originsize))
//{
//    int x = 0;
//}

std::string strSendBuf;
strSendBuf.append((const char*)&header, sizeof(header));
strSendBuf.append(strDestBuf);

目前服务器和pc端用的是小端序列,所以没做转换,安卓端用的是大端,安卓端自己做了转换。