public async UniTask SendUnreliable(UdpClient UdpSocket) { if (UnreliableCommandBuffer.ToArray().Length != 0) { var l2 = new UdpPacketL2 { PacketNumber = 0, ACKNumber = 0, Commands = UnreliableCommandBuffer.ToArray() }.Serialize(); var l2Encrypt = AES.Encrypt(l2, AESKey); var packet = new UdpPacket { PeerID = UniP2PManager.MyPeerID, UdpPacketL2 = l2Encrypt.result, UdpPacketL2IV = l2Encrypt.iv, }.Serialize(); await UdpSocket.SendAsync(packet, packet.Length, Peer.IPEndPoint); PacketCapture.Write(Peer.IPEndPoint.ToString(), packet.Length, "Unreliable"); UnreliableCommandBuffer.Clear(); } }
public async UniTask SendReliable(UdpClient UdpSocket) { if (State == UdpConnectionState.Connected) { /*if (!isTickReliablePacket) * { * isTickReliablePacket = true; * await TickReliablePacket(UdpSocket); * }*/ if (ReliableCommandBuffer.Count != 0) { var l2 = new UdpPacketL2 { PacketNumber = MyPacketCount, ACKNumber = 0, Commands = ReliableCommandBuffer.ToArray(), }.Serialize(); var l2Encrypt = AES.Encrypt(l2, AESKey); var packet = new UdpPacket { PeerID = UniP2PManager.MyPeerID, UdpPacketL2 = l2Encrypt.result, UdpPacketL2IV = l2Encrypt.iv, }.Serialize(); await UdpSocket.SendAsync(packet, packet.Length, Peer.IPEndPoint); PacketCapture.Write(Peer.IPEndPoint.ToString(), packet.Length, "Reliable"); //SentReliableBuffer.Add(MyPacketCount, new ReliablePacketInfo { Buffer = packet, WaitTime = 0 }); MyPacketCount++; } /*if (SentReliableBuffer.ContainsKey(PeerWaitPacketNumber)) * { * await UdpSocket.SendAsync(SentReliableBuffer[PeerWaitPacketNumber].Buffer, SentReliableBuffer[PeerWaitPacketNumber].Buffer.Length, Peer.IPEndPoint); * PacketCapture.Write(Peer.IPEndPoint.ToString(), SentReliableBuffer[PeerWaitPacketNumber].Buffer.Length, "SentReliableBuffer"); * }*/ } }