本文是通过TrinityCore研究从而对MMORPG服务器设计分析。
网络字节序
ByteBuffer是字节(unsigned char类型)处理,没有大小端处理。在网络通信应用程序上,这种是经常有的,网络是通过字节发送。
消息包格式:包头+包类型+包体
包头rc4加密
登录认证是(srp6)安全远程密码第六版协议,包类型是占一字节。
游戏中,包类型占1.5字节。
1、封包
重载&operator<<
按顺序把数据封包
2、解包
重载&operator>>
按顺序把数据解出
消息包处理
网络是采用boost asio
1、发送
这里需要注意,在这个执行,在多线程里面操作加锁
std::unique_lock<:mutex> guard(_writeLock);
boost::asio的发送函数:_socket.async_write_some
1.1 登录认证的发送
void AuthSession::SendPacket(ByteBuffer& packet)
{
if (!IsOpen())
return;
if (!packet.empty())
{
MessageBuffer buffer;
buffer.Write(packet.contents(), packet.size());
std::unique_lock<:mutex> guard(_writeLoc