Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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);
        }