通用异步网络通信库_第一章.md 3.8 KB

解析项目结构,涉及用到解析的,是这几个项目

![[Pasted image 20240415142046.png]]

先确保AsyncNetExampleServer服务器项目,对应的服务器插件,右键入口

![[Pasted image 20240415142317.png]]

为了方便调试跳转,把这个从官方下载的,移除

![[Pasted image 20240415142649.png]]

客户端AsyncNetExampleClient项目,同理,操作

![[Pasted image 20240415142735.png]]

添加引用

![[Pasted image 20240415143034.png]]

确保这个已添加即可,客户端工程,同理操作

![[Pasted image 20240415143051.png]]

打开对应的Unity工程,这是对应的程序集,所在路径

![[Pasted image 20240415143815.png]]

复制路径

![[Pasted image 20240415144352.png]]

在对应的程序库,右键,设置属性入口

![[Pasted image 20240415143131.png]]

粘贴到输出路径即可

![[Pasted image 20240415144029.png]]

后续构建,就会输出到这里

![[Pasted image 20240415144051.png]]

协议相关,也需要设置一下引用,同理

![[Pasted image 20240415144108.png]]

![[Pasted image 20240415144153.png]]

同理,设置输出路径

![[Pasted image 20240415144212.png]]

![[Pasted image 20240415144433.png]]

构建测试,成功

![[Pasted image 20240415144534.png]]

![[Pasted image 20240415144518.png]]

数据包的逻辑体,这是TCP异步传输,头部长度是4,参考[[TCP 图解]]; headerLength(头长度),该字段用四位表示,表示整个ip包头的长度,其中数的单位是4字节。即二进制数0000-1111(十进制数0-15); 而InitBodyBuff函数接口,是初始化,消息体的逻辑,ResetData函数接口,是重置各个数据信息的;

![[Pasted image 20240415145019.png]]

解析一下,异步网络调试,用到的工具类,是打印log相关的,先弄枚举,分别对应不同的log颜色

![[Pasted image 20240415154553.png]]

通过switch,传参就是调用AsyncLogColor枚举,使用ConsoleLog接口,完成不同颜色的WriteLine打印

![[Pasted image 20240415154825.png]]

不同的颜色Action委托,最简单的,是Log无颜色接口,调用原生的即可

![[Pasted image 20240415154917.png]]

然后,ColorLog接口,是主要外部调用的,不同颜色打印log信息,调用上述解析的ConsoleLog函数接口,完成打印即可; 还有警告Warn打印黄色信息,错误Error打印红色信息;

![[Pasted image 20240415155005.png]]

工具类,包括PackLenInfo打包信息接口,完成TCP网络信息包的构建,返回字节数组

![[Pasted image 20240415155200.png]]

分别是序列化包体,和解序列化包体,对应的都是AsyncMsg类

![[Pasted image 20240415155246.png]]

对应的是这个,加了可序列标签的抽象类

![[Pasted image 20240415155400.png]]

对应的继承体,是在协议里

![[Pasted image 20240415155421.png]]

弄一个枚举,是代表不同的网络连接状态

![[Pasted image 20240415160640.png]]

发送信息,最外部的SendCB调用接口,参考[[IAsyncResult]]和[[AsyncState]]

![[Pasted image 20240415160808.png]]

调用最外部的,是SendMsg接口,在调用之前,会使用AsyncTool的序列化工具,和打包,TCP网络数据包的PackLenInfo接口,返回得到的,字节数组,再调用

![[Pasted image 20240415160916.png]]

关闭连接的,是CloseSession函数接口,修改AsyncSessionState连接撞他,然后调用OnDisConnected函数,断开连接

![[Pasted image 20240415161354.png]]

是对应的这个抽象函数声明,会分别在,客户端Session和服务器端Session完成重写

![[Pasted image 20240415161542.png]]

还有俩,分别是连接上,和接受信息的抽象函数接口,都是在,客户端Session和服务器端Session,完成重写

![[Pasted image 20240415161629.png]]

具体逻辑,都只是log打印

![[Pasted image 20240415161735.png]]

![[Pasted image 20240415161753.png]]