diff options
Diffstat (limited to 'Tools/Hazel-Networking/Hazel/MessageWriter.cs')
-rw-r--r-- | Tools/Hazel-Networking/Hazel/MessageWriter.cs | 22 |
1 files changed, 15 insertions, 7 deletions
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 { /// <summary> - /// 嵌套结构的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 /// 数据 包括嵌套的子协议 /// ------------------------------------ /// </summary> @@ -20,8 +23,8 @@ namespace Hazel public static int BufferSize = 64000; public static readonly ObjectPool<MessageWriter> WriterPool = new ObjectPool<MessageWriter>(() => 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; } + /// <summary> + /// expected没有header + /// </summary> + /// <param name="expected"></param> + /// <returns></returns> public bool HasBytes(int expected) { if (this.SendOption == SendOption.None) |