上篇看完了TService现在看看其中出现的TChannel
先看属性

看看构造函数
这里会发现有2个构造函数:
1、一个传入的IP地址,此时将会设置isConnected = false。也就是未连接,所以调用ConnectAsync异步连接
2、另一个传入socket,此时说明是已经连接的isConnected = true,然后直接开始收发,也就是StartRecv和StartSend

连接
先看ConnectAsync,和TService有点像,同步的话就直接执行,异步的由回调抛到主线程执行

继续往下看OnAcceptComplete,设置连接好了为true,并开始收发

接收信息
看看这两个StartRecv,设置异步套接字缓冲区,也就是CircularBuffer,依然是同步异步方法然后执行HandleRecv来处理接收信息

HandleRecv处理接收信息方法,这个方法在缓冲区不够时自动扩充了缓冲区,并且将缓冲区中数据解析成流,然后设置流的开始位置,最后调用OnRead去读这个流


OnRead方法,最终调用了Service的OnRead方法,这个方法从上篇可知是一个委托

发送信息
StartSend,和上面的很像,发送完会对缓冲区进行一个回收复用


最后看一下public void Send(long actorId, MemoryStream stream)方法,开始就是根据服务器类型不同向sendBuffer写入不同数据,然后并不是立即发送,而是加入到TService下次发送的集合中,并通过上篇TService中的Update调用TChannel的Update


