Esempio n. 1
0
        /// <summary>
        /// Blocks until data is received, then handles that data.
        /// </summary>
        void DataHandler()
        {
            try {
                byte PacketType = 255;

                while ((PacketType = wSock.ReadByte()) != 255)
                {
                    if (BaseSocket.Connected == true)
                    {
                        if (Packets.ContainsKey(PacketType) == false)
                        {
                            // -- Kick player, unknown packet received.
                        }

                        var IncomingPacket = Packets[PacketType]();
                        IncomingPacket.Read(this);
                        IncomingPacket.Handle(this, ServerCore);
                    }
                }
            } catch {
                // -- User probably disconnected.
                if (BaseSocket.Connected == true)
                {
                    BaseSocket.Close();
                }

                BaseStream.Close();
                BaseStream.Dispose();

                ServerCore.nh.HandleDisconnect(this);
            }
        }