internal void Tcp_Reading_Loop() { // client = c; try { var networkStream = client.GetStream(); var binaryReader = new BinaryReader(networkStream); while (TcpReadingLoop) { try { uint packetLength = binaryReader.ReadUInt32(); NetworkPacket packet = new NetworkPacket(packetLength); packet.Packet_Id = binaryReader.ReadUInt32(); packet.Packet_Data = binaryReader.ReadBytes((int)packetLength); Console.WriteLine("New Packet Received From " + client.Client.RemoteEndPoint.ToString() + " ==> " + packet.ToString()); if (Server._OnMessageReceivedFromPlayer != null) { Server._OnMessageReceivedFromPlayer.Invoke(this, packet); } CheckLostnotReceivedPacket(packet.Packet_Id); Console.WriteLine(" Packet Loss Percentage : " + PacketLossPercentage() + " % "); Server.Broadcast_TCP(packet, this); } catch (Exception ex) { binaryReader.Close(); networkStream.Close(); // Console.WriteLine(ex.Message); // Disconnect(); return; } } } finally { Disconnect(); } }
private void BeginReceive_UDP_Client_Callback(IAsyncResult ar) { // End the operation and display the received data on // the console. UdpClient u = ((UdpState)(ar.AsyncState)).u; IPEndPoint e = ((UdpState)(ar.AsyncState)).e; NetworkPacket NewP = new NetworkPacket(); NewP.FromByteArray(Udp_Server.EndReceive(ar, ref e)); foreach (PlayerNetworkCommunication rp in Clients_List.Values) { if (rp != null && rp.CLientAddress.Address.ToString() == e.Address.ToString() && rp.CLientAddress.Port == e.Port) { if (Server._OnMessageReceivedFromPlayer != null) { Server._OnMessageReceivedFromPlayer.Invoke(rp, NewP); } Console.WriteLine("New Packet Received From " + e.ToString() + " ==> " + NewP.ToString()); Server.Broadcast_TCP(NewP, rp); rp.CheckLostnotReceivedPacket(NewP.Packet_Id); Console.WriteLine(" Packet Loss Percentage : " + rp.PacketLossPercentage() + " % "); } } // Continue Reading Packets UdpState s = new UdpState(); s.e = new IPEndPoint(Local_IP, Server_Port); s.u = Udp_Server; Udp_Server.BeginReceive(BeginReceive_UDP_Client_Callback, s); }