From 528a2b59e1b5519ddf0bebff6e92300705656952 Mon Sep 17 00:00:00 2001
From: chai <215380520@qq.com>
Date: Fri, 13 Oct 2023 20:28:43 +0800
Subject: + MultiplayerToolkit
---
Tools/Hazel-Networking/Hazel/MessageWriter.cs | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
(limited to 'Tools/Hazel-Networking/Hazel/MessageWriter.cs')
diff --git a/Tools/Hazel-Networking/Hazel/MessageWriter.cs b/Tools/Hazel-Networking/Hazel/MessageWriter.cs
index cbae11c..68280cd 100644
--- a/Tools/Hazel-Networking/Hazel/MessageWriter.cs
+++ b/Tools/Hazel-Networking/Hazel/MessageWriter.cs
@@ -6,12 +6,15 @@ using System.Text;
namespace Hazel
{
///
- /// 嵌套结构的Message
+ /// 单向写入的Message,嵌套结构的Message,如果有嵌套,也只有一个header,子协议没有header
+ /// 整个结构都会被socket发送,参见UdpConnection.cs
/// 结构:
- /// ------------------------------------
- /// 2bytes (ushort) 包长度
- /// 1bytes (tag) 协议ID,在AmongUS里是tags.cs里定义的tag和subtag
- /// ------------------------------------
+ /// -------------header-----------------
+ /// 1bytes SendOption 是否是可靠传输
+ /// (2bytes) (可靠传输用到的)
+ /// --------------数据------------------
+ /// 2bytes 包长度(不含这2bytes和下面的tag 1byte)
+ /// 1bytes 协议ID,在AmongUS里是tags.cs里定义的tag和subtag
/// 数据 包括嵌套的子协议
/// ------------------------------------
///
@@ -20,8 +23,8 @@ namespace Hazel
public static int BufferSize = 64000;
public static readonly ObjectPool WriterPool = new ObjectPool(() => new MessageWriter(BufferSize));
- public byte[] Buffer;
- public int Length; // 总长度
+ public byte[] Buffer; // 缓冲区,保存了整个包体,包括头部和内容
+ public int Length; // 有效数据在buffer中的长度,可能包含多个嵌套子协议。Length>=Position
public int Position; // 写入游标
public SendOption SendOption { get; private set; }
@@ -86,6 +89,11 @@ namespace Hazel
return output;
}
+ ///
+ /// expected没有header
+ ///
+ ///
+ ///
public bool HasBytes(int expected)
{
if (this.SendOption == SendOption.None)
--
cgit v1.1-26-g67d0