解析项目结构,涉及用到解析的,是这几个项目
![[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]]