自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 TCP的粘包

在每个消息前面添加一个消息头,消息头中包含消息的长度信息。例如,发送方要发送两个 10 字节的数据,第一个 10 字节的数据发送后,在等待确认的过程中,第二个 10 字节的数据到达发送缓冲区,这时发送方可能会将这两个数据合并成一个 20 字节的数据发送出去,从而导致接收方可能出现粘包现象。(1)TCP粘包是指发送方发送的若干个数据包在接收方接收是粘成一个包,从缓冲区来看,后一个数据报的头紧接着前一个数据报的尾,这并不是TCP协议本事的设计缺陷,而是由于TCP是面向字节流的协议这个特性所导致的情况。

2024-12-08 16:42:41 469

原创 C#中bool、char、string特殊类型的变量

(1)在 C# 中,bool 是一种简单的数据类型,用于表示布尔值,即只有两种可能的值:true 和 false。:可以将 char类型转换为其他类型,如 int(得到字符的 Unicode 编码值),也可以将其他类型转换为 char类型。char类型在 C# 中对于处理文本中的单个字符提供了便利的方式,无论是在简单的字符比较还是在复杂的字符串处理操作中都发挥着重要的作用。也可以使用 string类的Equals方法来进行比较,它有多种重载形式,可以指定比较的规则(如是否忽略大小写)。

2024-12-04 19:55:23 1156

原创 C#的值类型—浮点类型

例如,对于高精度的数学计算,如复杂的金融计算或科学研究中的数值模拟,double 类型能够提供更准确的结果。:在对内存要求比较严格,并且精度要求不是特别高的情况下,如简单的游戏开发中用于表示物体的位置(在一定精度范围内)、图形渲染中的纹理坐标等,float 类型是比较合适的选择。(1)在C#中,浮点类型用于表示小数部分的数值,它主要包括 float (单精度浮点数)和 double(双精度浮点数),这些类型在内存中以二进制格式储存,只够表示比整数类型更广泛的数值范围,但在精度上可能会有一定的损失。

2024-12-02 21:04:49 1132

原创 C#中的变量类型—整形类型

有符号 32 位整数,范围是从 - 2147483648 到 2147483647,是 C# 中最常用的整数类型之一,占用 4 个字节。比如,byte i =200,定义了一个 byte类型变量 i 并赋值为 200,这个值对于无符号的 byte类型是合法的。但是要注意,在进行算术运算和比较运算时,无符号和有符号整数的规则是不同的,可能会导致意外的结果。:无符号 16 位整数,范围是从 0 到 65535,占用 2 个字节。有符号8位整数,范围是从 -128到 127的,它在内存中占用 1 个字节。

2024-12-02 09:46:52 791

原创 C#—静态方法与非静态方法

在C#中,静态方法是属于类的方法,而不是类的实例对象的方法,它使用Static关键字进行修饰。简单的说是:静态变量属于类和类的变量,静态方法可以使用对象访问,也可以通过类名访问。非静态方法是属于类的实力对象的方法,当创建类的一个对象后,可以通过该对象来调用非静态方法。简单的说是:非静态方法属于对象,非静态方法只能使用对象名访问。

2024-11-27 20:42:21 570

原创 TCP与UDP的特定与不同

总结:TCP和UDP是传输层协议中的两大支柱,各自有着独特的特性和应用场景。TCP以其可靠性、数据顺序保证和流量控制而广泛应用于需要高可靠性的场合,如文件传输和远程登录。:UDP允许应用程序自行处理错误恢复和流量控制,使得它可以适应多种应用场景,尤其是那些对延迟敏感或需要广播/多播传输的场合。:UDP的头部仅包含源端口、目标端口、长度和校验和,结构简单,传输开销小。:TCP的头部较大,包含序列号、确认号、窗口大小等字段,增加了传输开销。:由于TCP的连接建立、重传和拥塞控制机制,它的传输延迟较高。

2024-11-26 19:56:25 260

原创 数据传输—UDP的定义和特性

UDP 协议能够快速发送和接收游戏数据,如玩家的移动指令、攻击指令等,减少延迟,让游戏的交互更加流畅。虽然可能会有少量数据丢失,但游戏通常可以通过一些简单的机制来弥补,比如重新发送关键操作指令或者进行简单的预测。)是一种在网络通信中使用的传输层协议。与TCP(Transmission Control Protocol)相比,UDP是一种无连接的协议,这意味着它不像TCP那样在通信的开始和结束时需要建立和终止连接。UDP不具备TCP的拥塞控制机制,因此在网络拥塞的情况下,UDP数据报可能会丢失或延迟增加。

2024-11-24 20:49:21 481

原创 数据传输—TCP的定义与特性

例如,在网页浏览中,用户请求的网页内容必须完整、准确地传输到浏览器,否则网页可能无法正常显示,TCP 就能很好地满足这种需求。:服务器收到SYN包后,回复一个SYN-ACK包,确认收到请求,并向客户端发送自己的SYN请求。SYN 标志位表示服务器也同意建立连接,ACK 标志位表示确认收到了客户端的请求,这就好比服务器回应客户端 “我也同意建立连接,我已经收到你的请求啦”。例如:客户端发送一个 SYN = 1,序列号 seq = x 的报文段,这里的 x 是一个随机生成的初始序列号。

2024-11-21 20:33:52 1016

原创 C#Socket客户端与服务器连接的代码

【代码】C#Socket客户端与服务器连接的代码。

2024-11-20 20:02:22 192

原创 C#知识点—OnDestory的方法

但如前面提到的,在 C# 中可以通过实现IDisposable接口来手动清理资源,不过这和OnDestory的触发时机和应用场景还是有很大区别的。IDisposable主要是在程序员手动释放资源(比如通过Dispose方法)或者在using语句块结束时被调用,而OnDestory是在 Unity 游戏对象被销毁这个特定事件发生时由引擎调用。在纯 C#(非 Unity 等特定引擎环境)中,对象的销毁主要由垃圾回收器(GC)根据引用情况来决定,没有像OnDestroy。

2024-11-20 09:31:58 831

原创 C#知识点—Update

在 Unity 中,Update是一个非常重要的函数,主要用于处理游戏对象(GameObject)每一帧的更新逻辑,在控制游戏逻辑的过程中,一般是需要按照每帧去处理,当一个脚本继承自MonoBehaviour 后,它就可以使用像Update这样的生命周期函数。Update函数在游戏运行时,每一帧都会被调用一次。游戏的帧率(每秒帧数,即 FPS)决定了Update被调用的频率。例如,在一个 60FPS 的游戏中,Update函数每秒会被调用 60 次。

2024-11-18 20:31:10 595

原创 C#知识点——Start方法

而且是在Update()之前,Start是在对象被第一次enable之后,在Update之前,Start在脚本的生命周期也只能被调用一次,Start可能不会被立刻调用,在这个阶段,脚本可以进行一些启动操作,例如播放动画,初始化游戏对象等。(2)与Awake方法相比,Awake是在游戏对象被实例化后立即调用,用于初始化对象的基本状态,而Start在Awake之后,更适合用于那些需要依赖其他脚本的Awake方法完成初始化后的操作。(1)如果将对象直接拖放到场景中,当场景加载完成后,Start方法会被调用。

2024-11-17 20:37:33 573

原创 C#中调试的相关知识点

Main。

2024-11-14 19:46:42 379

原创 C#知识点-Awake方法

如果是没有勾选的话,就是这个GameObject.Active的这个值,当创建的时候这个就为false时,Awake是不触发的,而Awake的触发顺序是随机的,可能出现的情况是,当你在其他脚本Awake把这个物体给SetActive(false)了,这个物体上的Awake就有极大的可能未触发,因为你不确定哪个Awake先执行(特殊处理例外)。(1)Awake函数在对象初始化之后立刻就会调用,换句话说,对象初始化之后第一调用的函数就是Awake;而Start是在对象初始化后,第一次Update之前调用的,

2024-11-13 20:10:05 514

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除