本文主要是介绍ET框架学习——消息系统之五,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上一篇文章简单学习了一下AChannel和对应的派生类。这里来学习和Channel对应的Server相关的类
和Channel一样,Server也是对应一个基类AServer和派生类。并且派生类也是对应TCP,KCP和WebSocket三个。KCP和WebSocket都相对来说比较陌生。这里只看一下TServer相关的内容。
-
AServer
内部定义的框架所使用的三种协议类型枚举。AServer是继承自Component的。
public enum NetworkProtocol
{KCP,TCP,WebSocket,
}
内部定义了一下重要的抽象方法,比如获取和Server类型一致的Channel对象的方法。还有一个Action委托Action<AChannel> acceptCallback,和对应的事件。OnAccept方法用于执行委托。
-
TService
TServer既可以做客户端,也可以做服务端。其内部有一个字典Dictionary<long, TChannel> idChannels,该字典内部存放的和TServer对应的Channel对象。另外还有一个HashSet<long> needStartSendChannel 集合,用于缓存待传输的Channel对象。在其构造方法中会指定基类中的Action委托和端口,地址等信息。创建完Socket后,开启监听。最后执行AcceptAsync方法
AcceptAsync方法用于测试接收数据。方法内部会调用到创建TChannel部分,创建完成后会加入字典,然后将TChannel对象作为参数,执行基类方法OnAccept。
OnComplete方法会将成功操作的回调放到主线程来执行。这里是通过SocketAsyncEventArgs的Completed属性来调用的该方法。
Update方法会遍历HashSet集合中的元素,然后获取到其中的Channel对象,执行StartSend方法,最后清空集合。
这篇关于ET框架学习——消息系统之五的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!