aboutsummaryrefslogtreecommitdiff
path: root/Tools/Hazel-Networking/Hazel/Udp
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/Hazel-Networking/Hazel/Udp')
-rw-r--r--Tools/Hazel-Networking/Hazel/Udp/UdpClientConnection.cs6
-rw-r--r--Tools/Hazel-Networking/Hazel/Udp/UdpConnection.Reliable.cs15
-rw-r--r--Tools/Hazel-Networking/Hazel/Udp/UdpConnection.cs4
3 files changed, 20 insertions, 5 deletions
diff --git a/Tools/Hazel-Networking/Hazel/Udp/UdpClientConnection.cs b/Tools/Hazel-Networking/Hazel/Udp/UdpClientConnection.cs
index f6da329..90aeb0d 100644
--- a/Tools/Hazel-Networking/Hazel/Udp/UdpClientConnection.cs
+++ b/Tools/Hazel-Networking/Hazel/Udp/UdpClientConnection.cs
@@ -205,9 +205,10 @@ namespace Hazel.Udp
}
#endif
- var msg = MessageReader.GetSized(this.ReceiveBufferSize);
+ var msg = MessageReader.GetSized(this.ReceiveBufferSize);//一个父message
try
{
+ // Buffer包含MessageWriter的整个内容,包括header
socket.BeginReceive(msg.Buffer, 0, msg.Buffer.Length, SocketFlags.None, ReadCallback, msg);
}
catch
@@ -282,7 +283,7 @@ namespace Hazel.Udp
//Begin receiving again
try
{
- StartListeningForData();
+ StartListeningForData(); //继续接受消息。它这里没有用async await在一个while里轮询,所以需要嵌套调用
}
catch (SocketException e)
{
@@ -305,6 +306,7 @@ namespace Hazel.Udp
DataReceivedRaw?.Invoke(msg.Buffer, msg.Length);
#endif
+ //c //! 重点看这里面长什么样
HandleReceive(msg, msg.Length);
}
diff --git a/Tools/Hazel-Networking/Hazel/Udp/UdpConnection.Reliable.cs b/Tools/Hazel-Networking/Hazel/Udp/UdpConnection.Reliable.cs
index bed4738..cff403b 100644
--- a/Tools/Hazel-Networking/Hazel/Udp/UdpConnection.Reliable.cs
+++ b/Tools/Hazel-Networking/Hazel/Udp/UdpConnection.Reliable.cs
@@ -280,7 +280,18 @@ namespace Hazel.Udp
ushort id;
if (ProcessReliableReceive(message.Buffer, 1, out id))
{
- InvokeDataReceived(SendOption.Reliable, message, 3, bytesReceived);
+ //c
+/*
+ void InvokeDataReceived(SendOption sendOption, MessageReader buffer, int dataOffset, int bytesReceived)
+ {
+ buffer.Offset = dataOffset;
+ buffer.Length = bytesReceived - dataOffset;
+ buffer.Position = 0;
+
+ InvokeDataReceived(buffer, sendOption);
+ }
+*/
+ InvokeDataReceived(SendOption.Reliable, message, 3, bytesReceived); // 鈭 3鏄痟eader锛屼笉鏄痩ength+tag
}
else
{
@@ -302,7 +313,7 @@ namespace Hazel.Udp
byte b2 = bytes[offset + 1];
//Get the ID form the packet
- id = (ushort)((b1 << 8) + b2);
+ id = (ushort)((b1 << 8) + b2); // 鐢ㄤ簬鍙潬浼犺緭鐨刬d
/*
* It gets a little complicated here (note the fact I'm actually using a multiline comment for once...)
diff --git a/Tools/Hazel-Networking/Hazel/Udp/UdpConnection.cs b/Tools/Hazel-Networking/Hazel/Udp/UdpConnection.cs
index e64576a..78f1788 100644
--- a/Tools/Hazel-Networking/Hazel/Udp/UdpConnection.cs
+++ b/Tools/Hazel-Networking/Hazel/Udp/UdpConnection.cs
@@ -77,7 +77,7 @@ namespace Hazel.Udp
case SendOption.Reliable:
ResetKeepAliveTimer();
- AttachReliableID(buffer, 1);
+ AttachReliableID(buffer, 1); // 写入之前留空的用于可靠传输的ID
WriteBytesToConnection(buffer, buffer.Length);
Statistics.LogReliableSend(buffer.Length - 3);
break;
@@ -132,6 +132,7 @@ namespace Hazel.Udp
{
//Handle reliable receives
case (byte)SendOption.Reliable:
+ //c //!
ReliableMessageReceive(message, bytesReceived);
break;
@@ -161,6 +162,7 @@ namespace Hazel.Udp
break;
case (byte)SendOption.None:
+ //c //!
InvokeDataReceived(SendOption.None, message, 1, bytesReceived);
Statistics.LogUnreliableReceive(bytesReceived - 1, bytesReceived);
break;