Unity简单的Socket连接

关于网络连接

首次接触Unity网络连接。其实一早就接触各种网络协议的概念了,但都停留在名字上了。没有大佬指点,包括之前了解Protobuf的时候,都是摸索。这导致很长一段时间纠结各种各样的协议,却不能很好的区别和应用了。
然后,偶发灵感,从实际应用出发,归根结底来讲,就是服务器和客户端设备互发信息。这么来讲的话就好理解多了。而各种协议就是以不同规则和形式来收发信息而已。比如Tcp是建立连接后才收发信息,服务器和客户端有来有回。而UDP,不需要建立连接,也不需要回应,硬发。
个人理解大概这样,算是初窥门径。
其实理解了原理之后,剩下就是搬运Api了。

流程

摸索的是基于TCP协议的Socket通信。收发消息都是搬运api,不再赘述。流程上也比较相似。
服务器:
开启服务器(监听端口)——>开始接收(循环接收客户端消息)和发送(主动发送/接收到客户端信息后发送相关信息)消息
客户端:
连接服务器(IP+端口)——>开始接收(循环接收客户端消息并进行相应动作)和发送(发送相关息)消息

问题

就是频繁发送出现的粘包和发送信息过大的分包消息。方案网上也都有就是发送时带个头储存数据大小的头文件。

另外测试的时候发送“你好”,结果解析的结果是“浣犲ソ”,是由于因为编码问题导致的,同步一下编码就ok了。

扩展

关于Protobuf和其他相关类型的插件有什么用,这就要说到Socket通讯了,看了api我们会发现,我们在传输文件的时候都是传输文件的字节流,即比如C#的类等数据都是通过字节流的形式传过去的,那么我们在发送前和接收后都需要额外进行一个操作,即转换成字节流和从字节流转成原数据,这类插件可以更方便的实现这个序列化和反序列化的操作。而且效率和兼容性更好(网传)。

猜你喜欢

转载自blog.csdn.net/qq_39860954/article/details/115465544
今日推荐