/// <summary>
        /// Sends a packet to the remote host.
        /// </summary>
        public static INetworkPacket ReadPacket(this ConnectionState con, byte[] allData)
        {
            INetworkPacket packet;

            using (var memoryStream = new MemoryStream(allData)) {
                using (var binaryReader = new DataInputStream(memoryStream)) {
                    long packetNumber = binaryReader.ReadLong();
                    binaryReader.Flush();
                    System.Diagnostics.Debug.WriteLine($"Read packet with ID: {packetNumber}");
                    Debug.WriteLine("Getting new packet by id!");
                    packet = DeckServiceProvider.GetNewNetworkPacketById(packetNumber);
                    Debug.WriteLine($"Getting new packet by id [{packet.GetType().Name}] - Success!");
                    Debug.WriteLine($"Getting data from stream [ID:{packetNumber}]!");
                    packet.FromInputStream(binaryReader);
                    Debug.WriteLine($"Getting data from stream[ID:{packetNumber}] - Success!");
                    packet.Execute(con);
                }
            }
            if (!packet.CanServerReceive())
            {
                //    throw new Exception($"Server can't receive NetworkPacket[ID: {packet.GetPacketNumber()}].");
            }
            return(packet);
        }