实用的Unity3D基于TCP/IP协议的网络通信框架--客户端

时间:2023-01-05 19:10:21

大家好,我是FoldCc,今天给大家分享一下自己设计并且经常用到的一个网络通信框架---客户端

经过自己的实践,发现这套框架在应对一些中小型手游还是比较稳定使用的,整体结构也比较简单,但是特别实用,唯一要注意一点的是在开发网络通信时,一定要注意多线程争用资源的问题。

下面我为大家详细介绍一下:

首先最核心的是Socket连接器 它的功能主要有4个

》向服务器发起连接请求

》一个能够返回已经连接服务器的Socket的方法(仅用于之后开启接收和发送消息线程)

》判断当前是否连接正常

》断开服务器连接

当连接器连接成功后会自动创建两个线程,分别用来接收和发送,(至于为什么要单独分开成两个,是因为在实际应用中一个线程处理这两个效率上低,容易出问题,并且理论上来说一个线程同时处理发送和接收也有点不合理)为了防止接收和发送线程在处理消息可能出现效率跟不上的问题,我设置了两个消息队列,分别用来装发送的消息和接收的消息,其中接收的消息通过消息分类器分类到不同队列中,这里需要注意的一点是,接收消息需要做粘包处理!说通俗一点就是判断消息的完整性,这里我为所有消息都加了一个特定的消息头 和消息尾 用来判断消息的完整性,至于消息头和消息尾的内容由自己设计,最好是不常使用的一些特殊字符,防止遇到和内容相同的情况。

两个线程则只负责将收到的消息往队列中存储以及将发送队列的消息按顺序发送就行了,消息分类会单独去对消息进行分类并存放到对应队列中。

下面是这一套框架的流程图,如果有用大家帮忙转载哦!实用的Unity3D基于TCP/IP协议的网络通信框架--客户端

实用的Unity3D基于TCP/IP协议的网络通信框架--客户端