网络编程
文章平均质量分 86
baixiaofei567
如果十年前没种树,那最好的时间是现在
展开
-
Unity3D网络游戏实战——通用服务器框架
前言网络游戏涉及客户端和服务端。服务端程序记录玩家数据,处理客户端发来的协议。本文就介绍一套通用客户端的实现。该框架基于Select多路复用处理网络消息,具有粘包半包处理、心跳机制等功能,还是用MySQL数据库存储玩家数据,是一套功能较完备的C#服务端程序。一般单个服务端进程可以承载数百名玩家,如果更多就需要改为分布式架构。7.1服务端架构服务端两大核心是处理客户端的消息和存储玩家数据。客户端与服务端通过TCP连接,使两者可以传递数据,服务端还连接着MySQL数据库,可将玩家数据保存到数据库中。原创 2021-11-09 11:59:33 · 12708 阅读 · 1 评论 -
Unity3D网络游戏实战——通用客户端模块
前言书中说的是搭建一套商业级的客户端网络模块,一次搭建长期使用。本章主要是完善大乱斗游戏中的网络模块,解决粘包分包、完整发送数据、心跳机制、事件分发等功能6.1网络模块设计核心是静态类NetManager,它对外提供了一系列方法NetManager.Connect(ip,port)连接服务端NetManager.Close()NetManager.Send(msgMove)发送消息,参数为协议对象,NetManager会自动把它转换成二进制数据NetManager.Update()需外部调原创 2021-11-07 02:05:56 · 963 阅读 · 0 评论 -
Unity3D网络游戏实战——深入了解TCP,解决暗藏问题
前言这一章基本属于科普章节,相信看到这篇文章的人也学习过计算机网络,所以很多基础知识,比如三握四挥这些就不多说了。5.3常用TCP参数5.3.1ReceiveBufferSize指定了操作系统读缓冲区的大小,默认值8192。缓冲区满了,发送端会暂停发送数据,较大的缓冲区可以减少发送短暂停的概率,提高效率。5.3.2SendBufferSize指定操作系统写缓冲区的大小,默认值也是8192,设定的大一点也比较好~5.3.3NoDelay默认情况TCP会使用Nagle算法发送数据,因为TCP/I原创 2021-11-04 22:49:58 · 2053 阅读 · 0 评论 -
Unity3D网络游戏实战——正确收发数据流
前言本章主要介绍和实现怎样正确和高效地处理TCP数据(数据流)。也解决了上一章我们遇到的一些问题4.1TCP数据流4.1.1系统缓冲区收到对端数据时,操作系统会将数据存入到Socket的接收缓冲区中,而且操作系统层面上的缓冲区完全由操作系统操作,程序并不能直接操作,只能通过socket.Receive、socket.Send方法来间接操作。注意:之后出现的readBuff不是发送缓冲区也不是接收缓冲区,而是用户自定义的缓冲区,用于存放两个操作系统缓冲区读取出的字节数据。4.1.2粘包半包现象粘原创 2021-11-04 15:28:26 · 3327 阅读 · 1 评论 -
Unity3D网络游戏实战——实践出真知:大乱斗游戏
前言这一章是教我们做一个大乱斗游戏。但是书中的代码有些前后不一致导致运行错误,如果你也碰到了这样的情况,可以参考我的代码我们要完成的主要有以下这些事左键操控角色行走右键操控角色攻击受到攻击掉血,队手hp为0时消失,自己hp为0时失败,掉线同理角色类的编写介绍协议、消息队列等客户端以及服务端代码角色类BaseHumanunity相关操作基本都省略了BaseHuman为角色基类CtrlHuman代表操控角色,在BaseHuman基础上多了处理鼠标操控功能SyncHuman代表同步原创 2021-11-03 00:37:17 · 2339 阅读 · 0 评论 -
Unity3D网络游戏实战——分身有术:异步和多路复用
前言前面一篇文章全部用的是阻塞API,也就是同步Socket程序,客户端一卡一顿、服务端只能一次处理一个客户端的消息,不具有实用性。所有有了异步和多路复用两种技术解决了阻塞问题。2.1什么是异步代码不需要进程一直等待下去,而是继续往下执行,直到满足条件才调用回调函数,这样可以提高执行的效率。异步的实现依赖于多线程技术。在Unity中,执行Start、Update方法的线程是主线程,会另外开一条线程执行异步代码,然后满足条件后另一条线程调用回调函数,主线程继续往下执行代码,不受影响。2.2异步客户原创 2021-10-31 17:01:31 · 1052 阅读 · 0 评论 -
Unity3D网络游戏实战——网络游戏的开端:Echo
前言虽然最爱单机游戏,但是和朋友一起玩联网游戏可以获得双倍快乐!所以开始学习网络游戏相关的知识啦1.1藏在幕后的服务端客户端和客户端之间通过服务端的消息转发进行通信。为了支撑很多玩家,游戏服务端通常采取分布式架构,也就是分区服务端,每个服务端负责不同区的玩家。服务端和服务端之间通常使用TCP通信。1.2网络连接的端点:Socket网络上的两个程序通过一个双向的通信连接实现数据交换,这个连接的一端称为一个Socked。每个Socket包含五种必备信息:连接使用的协议:TCP本地IP:19原创 2021-10-30 00:51:31 · 864 阅读 · 0 评论