坑爹的底层

///

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类(数据包分析器)

成员:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值