diff options
Diffstat (limited to 'Tools/Hazel-Networking/Hazel/Udp')
-rw-r--r-- | Tools/Hazel-Networking/Hazel/Udp/UdpClientConnection.cs | 6 | ||||
-rw-r--r-- | Tools/Hazel-Networking/Hazel/Udp/UdpConnection.Reliable.cs | 15 | ||||
-rw-r--r-- | Tools/Hazel-Networking/Hazel/Udp/UdpConnection.cs | 4 |
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; |