///
boost::asio::ip::tcp::acceptor类 负责 接收数据 发送数据 接收客户端连接..
boost::asio::ip::tcp::endpoint类 记录地址.
///
asioSessionBuf类
成员:
u32 maxLen;
u32 len;
char* data;
缓存类
///
asioAcceptor类
成员:
boost::mutex m_mutex; //锁
boost::asio::io_service * m_ioService; //IO操作服务
boost::asio::ip::tcp::socket m_socket; //
u32 m_maxSendSize; //最大发送数据数
asioSessionBuf m_tmpRecvBuf; //临时接收缓存
bool m_enable;
收发
///
asioSession类继承自asioAcceptor类
成员:
boost::mutex m_recvMutex; //锁
asioSessionBuf m_recvBuf; //
asioNet * m_pAsioNet; //
CChaosContainer<asioSession*>::iterator_t m_iterator; //
asioPlayer * m_pPlayer; //
和玩家类关联?
///
asioNet类 里面有个IO服务...也就是所有的IO操作的 实际操作对象..
里面有一个CChaosContainer<asioSession*> 容器,,
实现在Init()new好所有的asioSession类
有客户端连接后在容器里面分配一个空闲的.
函数DoAccept先向容器要一个空闲的asioSession
然后向IO服务里面添加接收客户端的连接请求
并传入参数 要的那个容器和 收到事件后的相应处理函数HandleAccept
HandleAccept函数在调用OnClientConnect(客户端连接实际操作函数,,这个函数也是关闭连接函数)
并继续想IO服务添加添加接收客户端的连接请求(循环...)
boost::asio::io_service::work** IO操作工作线程??????
///
CASIONetLocal类继承自asioNet类
主要重写
//接收客户端连接
void OnClientConnect(asioSession *s);
OnClientConnect向PlayerManager类的全局指针要空闲的....关联起来.
并伪初始化玩家类,asioSessionBuf类
///
asioPlayer类
成员:
PlayerStatus_e m_state; //玩家状态
bool m_isRemove; //是否移除
asioSession * m_pConncet; //连接对象
CLock m_conncetLock; //锁
u32 m_hertTime;
玩家类的网络底层
///
平妖
//
fcPlayerInterface类(藏地asioNet类)
//
CClientNetManager类继承fcPlayerInterface类(藏地CASIONetLocal类)
//
fcPlayerInterface类(藏地asioPlayer类)
玩家类的网络底层
//
CPlayerManager类
CPlayerManager更新玩家逻辑.... 以及玩家每多少时的更新...
//
Player类继承自fcPlayerInterface类
成员:
Update更新玩家逻辑,收发网络数据包
//
fcPacketParser类(数据包分析器)
成员: