前言
客户端链接完成并发出请求信息后,当然就要来到服务端的接收和处理,下面将会演示服务的接收处理流程,照之前一样 不一头扎进底层看源码,只是看是有什么效果提供什么功能,会用就行。
一、处理从客户端发送的信息
前情提要之前的文章的结尾 客户端向服务端发送了信息
1.服务端Common库 调用PackageHandler类的封包处理器
ReceiveData()
通过数据流来接收
if(stream.Position+count>stream.Capacity)接收后判断是否超容量
stream.Write()没有就写入到流里
ParsePackage()
调用同类下的数据包解析方法
SkillVridge
协议专用类
2.消息分配处理
Dispath()
分配响应 给客户端用
if()各个if判断位分发各个消息
Dispatch()
分配请求 给服务端用
如上
3.消息分发器
主要是两个方法
客户端是用了单线程的分发,服务端为了效率和性能使用了多线程的分发
客户端和服务端的链接都是使用的网络对象
服务端涉及到监听和接收然后再是数据的触发,因为一个消息传过来要先判断是否有人链接服务器
4.服务端链接
TcpSocetListener
二、服务端与客户端的通信
服务端的网络文件夹
1.ExtensionMethods
类似于JAVAWEB的切面编程,主要用途是扩展类的功能
2.NetConnection
网络链接类,客户端链接到客户端都会创建一条通信,用来存储链接的信息
3.NetService
抛开网络的底层链接之外的主入口,也是提供项目所有的网络服务
先是Init初始化,创建一个监听器,位监听器提供一个监听事件OnsocketConnected
Start()开启消息分发器的八个线程
Stop()关闭消息分发器及所有线程
4.NetSerssion 网络会话数据的定义
为项目实体类的数据
5.NetEventArgs 网络数据包的定义
三、服务端管理客户端服务的 Service文件夹
1.作为例子的 UserService类
因此 假设客户端发送了登录的消息过来,此类就会将其订阅并执行对应的方法
总结
只是草草的大概了解各个方法的作用已经大概的通信流程,还是有些许纰漏,在之后的时间我还会继续更新此文章。