From dd0c5d50e377d9be1e728463670908a6c9d2c14f Mon Sep 17 00:00:00 2001
From: chai <215380520@qq.com>
Date: Thu, 12 Oct 2023 10:13:30 +0800
Subject: *misc
---
"Documents/\350\265\204\346\226\231.xlsx" | Bin 2577004 -> 1187005 bytes
.../Assets/MultiplayerToolkit/Packet.cs | 77 +++++++++++----------
.../Test/TestTcp/Test_TcpClient.cs | 8 +--
.../Test/TestTcp/Test_TcpServer.cs | 19 +++++
4 files changed, 62 insertions(+), 42 deletions(-)
diff --git "a/Documents/\350\265\204\346\226\231.xlsx" "b/Documents/\350\265\204\346\226\231.xlsx"
index 47d8002..0cec306 100644
Binary files "a/Documents/\350\265\204\346\226\231.xlsx" and "b/Documents/\350\265\204\346\226\231.xlsx" differ
diff --git a/MultiplayerToolkit/Assets/MultiplayerToolkit/Packet.cs b/MultiplayerToolkit/Assets/MultiplayerToolkit/Packet.cs
index 5638189..4e73f80 100644
--- a/MultiplayerToolkit/Assets/MultiplayerToolkit/Packet.cs
+++ b/MultiplayerToolkit/Assets/MultiplayerToolkit/Packet.cs
@@ -5,17 +5,24 @@ using UnityEngine;
namespace MultiplayerToolkit
{
-
+ ///
+ /// 网络包,通用结构,无论是TCP\UDP还是Steamn
+ /// 结构:
+ /// 4bytes (包长度,不含这4字节)
+ /// 1byte (协议类型,内置协议、玩家自定义协议)
+ /// (4bytes) (如果是玩家自定义协议,提供一个modder唯一编号)
+ /// 2bytes (协议ID)
+ ///
public class Packet : IDisposable
{
- private List buffer;
+ private List writableBuffer;
private byte[] readableBuffer;
private int readPos;
private bool disposed;
public Packet()
{
- this.buffer = new List();
+ this.writableBuffer = new List();
this.readPos = 0;
}
@@ -25,14 +32,14 @@ namespace MultiplayerToolkit
///
public Packet(int _id)
{
- this.buffer = new List();
+ this.writableBuffer = new List();
this.readPos = 0;
this.Write(_id);
}
public Packet(byte[] _data)
{
- this.buffer = new List();
+ this.writableBuffer = new List();
this.readPos = 0;
this.SetBytes(_data);
}
@@ -43,12 +50,12 @@ namespace MultiplayerToolkit
///
public void SetBytes(byte[] _data)
{
- if (buffer != null)
- buffer.Clear();
+ if (writableBuffer != null)
+ writableBuffer.Clear();
readPos = 0;
disposed = false;
this.Write(_data);
- this.readableBuffer = this.buffer.ToArray();
+ this.readableBuffer = this.writableBuffer.ToArray();
}
///
@@ -59,20 +66,20 @@ namespace MultiplayerToolkit
///
public void SetBytes(byte[] _data, int offset, int length)
{
- if (buffer != null)
- buffer.Clear();
+ if (writableBuffer != null)
+ writableBuffer.Clear();
readPos = 0;
disposed = false;
this.Write(Utils.SubArray(_data, offset, length));
- this.readableBuffer = this.buffer.ToArray();
+ this.readableBuffer = this.writableBuffer.ToArray();
}
///
- /// 开头写入一个int为当前buffer长度
+ /// 开头写入一个int为当前writableBuffer长度
///
public void InsertLength()
{
- this.buffer.InsertRange(0, BitConverter.GetBytes(this.buffer.Count));
+ this.writableBuffer.InsertRange(0, BitConverter.GetBytes(this.writableBuffer.Count));
}
///
@@ -81,18 +88,18 @@ namespace MultiplayerToolkit
///
public void InsertInt(int _value)
{
- this.buffer.InsertRange(0, BitConverter.GetBytes(_value));
+ this.writableBuffer.InsertRange(0, BitConverter.GetBytes(_value));
}
public byte[] ToArray()
{
- this.readableBuffer = this.buffer.ToArray();
+ this.readableBuffer = this.writableBuffer.ToArray();
return this.readableBuffer;
}
public int Length()
{
- return this.buffer.Count;
+ return this.writableBuffer.Count;
}
public int UnreadLength()
@@ -104,7 +111,7 @@ namespace MultiplayerToolkit
{
if (_shouldReset)
{
- this.buffer.Clear();
+ this.writableBuffer.Clear();
this.readableBuffer = null;
this.readPos = 0;
return;
@@ -114,43 +121,43 @@ namespace MultiplayerToolkit
public void Write(byte _value)
{
- this.buffer.Add(_value);
+ this.writableBuffer.Add(_value);
}
public void Write(byte[] _value)
{
- this.buffer.AddRange(_value);
+ this.writableBuffer.AddRange(_value);
}
public void Write(short _value)
{
- this.buffer.AddRange(BitConverter.GetBytes(_value));
+ this.writableBuffer.AddRange(BitConverter.GetBytes(_value));
}
public void Write(int _value)
{
- this.buffer.AddRange(BitConverter.GetBytes(_value));
+ this.writableBuffer.AddRange(BitConverter.GetBytes(_value));
}
public void Write(long _value)
{
- this.buffer.AddRange(BitConverter.GetBytes(_value));
+ this.writableBuffer.AddRange(BitConverter.GetBytes(_value));
}
public void Write(float _value)
{
- this.buffer.AddRange(BitConverter.GetBytes(_value));
+ this.writableBuffer.AddRange(BitConverter.GetBytes(_value));
}
public void Write(bool _value)
{
- this.buffer.AddRange(BitConverter.GetBytes(_value));
+ this.writableBuffer.AddRange(BitConverter.GetBytes(_value));
}
public void Write(string _value)
{
this.Write(_value.Length);
- this.buffer.AddRange(Encoding.ASCII.GetBytes(_value));
+ this.writableBuffer.AddRange(Encoding.ASCII.GetBytes(_value));
}
public void Write(Vector3 _value)
@@ -170,7 +177,7 @@ namespace MultiplayerToolkit
public byte ReadByte(bool _moveReadPos = true)
{
- if (this.buffer.Count > this.readPos)
+ if (this.writableBuffer.Count > this.readPos)
{
byte arg_31_0 = this.readableBuffer[this.readPos];
if (_moveReadPos)
@@ -184,9 +191,9 @@ namespace MultiplayerToolkit
public byte[] ReadBytes(int _length, bool _moveReadPos = true)
{
- if (this.buffer.Count > this.readPos)
+ if (this.writableBuffer.Count > this.readPos)
{
- byte[] arg_3B_0 = this.buffer.GetRange(this.readPos, _length).ToArray();
+ byte[] arg_3B_0 = this.writableBuffer.GetRange(this.readPos, _length).ToArray();
if (_moveReadPos)
{
this.readPos += _length;
@@ -198,12 +205,12 @@ namespace MultiplayerToolkit
public byte[] CloneBytes()
{
- return this.buffer.ToArray();
+ return this.writableBuffer.ToArray();
}
public short ReadShort(bool _moveReadPos = true)
{
- if (this.buffer.Count > this.readPos)
+ if (this.writableBuffer.Count > this.readPos)
{
short arg_35_0 = BitConverter.ToInt16(this.readableBuffer, this.readPos);
if (_moveReadPos)
@@ -217,7 +224,7 @@ namespace MultiplayerToolkit
public int ReadInt(bool _moveReadPos = true)
{
- if (this.buffer.Count > this.readPos)
+ if (this.writableBuffer.Count > this.readPos)
{
int arg_35_0 = BitConverter.ToInt32(this.readableBuffer, this.readPos);
if (_moveReadPos)
@@ -231,7 +238,7 @@ namespace MultiplayerToolkit
public long ReadLong(bool _moveReadPos = true)
{
- if (this.buffer.Count > this.readPos)
+ if (this.writableBuffer.Count > this.readPos)
{
long arg_35_0 = BitConverter.ToInt64(this.readableBuffer, this.readPos);
if (_moveReadPos)
@@ -245,7 +252,7 @@ namespace MultiplayerToolkit
public float ReadFloat(bool _moveReadPos = true)
{
- if (this.buffer.Count > this.readPos)
+ if (this.writableBuffer.Count > this.readPos)
{
float arg_35_0 = BitConverter.ToSingle(this.readableBuffer, this.readPos);
if (_moveReadPos)
@@ -259,7 +266,7 @@ namespace MultiplayerToolkit
public bool ReadBool(bool _moveReadPos = true)
{
- if (this.buffer.Count > this.readPos)
+ if (this.writableBuffer.Count > this.readPos)
{
bool arg_35_0 = BitConverter.ToBoolean(this.readableBuffer, this.readPos);
if (_moveReadPos)
@@ -307,7 +314,7 @@ namespace MultiplayerToolkit
{
if (_disposing)
{
- this.buffer = null;
+ this.writableBuffer = null;
this.readableBuffer = null;
this.readPos = 0;
}
diff --git a/MultiplayerToolkit/Assets/MultiplayerToolkit/Test/TestTcp/Test_TcpClient.cs b/MultiplayerToolkit/Assets/MultiplayerToolkit/Test/TestTcp/Test_TcpClient.cs
index 5dfe6d5..21c5329 100644
--- a/MultiplayerToolkit/Assets/MultiplayerToolkit/Test/TestTcp/Test_TcpClient.cs
+++ b/MultiplayerToolkit/Assets/MultiplayerToolkit/Test/TestTcp/Test_TcpClient.cs
@@ -17,12 +17,6 @@ public class Test_TcpClient : MonoBehaviour
Invoke("ConnectServer", 2);
}
- // Update is called once per frame
- void Update()
- {
-
- }
-
private void ConnectServer()
{
Debug.Log("ConnectServer");
@@ -35,7 +29,7 @@ public class Test_TcpClient : MonoBehaviour
packet.Write((int)123);
packet.Write("hello");
stream.Write(packet.ToArray());
- Debug.Log("connected, "+ client.Connected);
+ Debug.Log("connected, " + client.Connected);
}
diff --git a/MultiplayerToolkit/Assets/MultiplayerToolkit/Test/TestTcp/Test_TcpServer.cs b/MultiplayerToolkit/Assets/MultiplayerToolkit/Test/TestTcp/Test_TcpServer.cs
index 7e3e9f0..7abd2ef 100644
--- a/MultiplayerToolkit/Assets/MultiplayerToolkit/Test/TestTcp/Test_TcpServer.cs
+++ b/MultiplayerToolkit/Assets/MultiplayerToolkit/Test/TestTcp/Test_TcpServer.cs
@@ -30,6 +30,11 @@ public class Test_TcpServer : MonoBehaviour
listener.Start();
//listener.BeginAcceptTcpClient(OnAcceptTcpClient, null);
+ Debug.Log("Start, Thread=" + Thread.CurrentThread.ManagedThreadId);
+
+ Foo2();
+ Debug.Log("Foo2");
+
Listen();
Debug.Log("listen");
@@ -61,8 +66,22 @@ public class Test_TcpServer : MonoBehaviour
async Task Foo2()
{
+ Debug.Log("Foo2, Thread=" + Thread.CurrentThread.ManagedThreadId);
await Foo();
+ Thread.Sleep(1000);
+
+ await Task.Run(() => {
+ int threadid = Thread.CurrentThread.ManagedThreadId;
+ ExecuteOnMainThread(() => {
+ Debug.Log("Task, Threadid=" + threadid);
+ });
+ for (int i = 0; i < 100; ++i)
+ {
+ Debug.Log(i);
+ }
+ });
+
return 1;
}
--
cgit v1.1-26-g67d0