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