Пример #1
0
        public MainForm()
        {
            InitializeComponent();

            cmbOutputFmt_SelectedIndexChanged(null, null);
            m_processor = new ClientPacketProcessor();
        }
Пример #2
0
        protected override void OnConnect()
        {
            EODataChunk wrap = new EODataChunk();

            StartDataReceive(wrap);

            m_packetProcessor = new ClientPacketProcessor();             //reset the packet processor to allow for new multis
        }
Пример #3
0
        static void Main()
        {
            SystemEvents.SessionEnding += new SessionEndingEventHandler(SystemEvents_SessionEnding);
            if (LoadFeatures.Load() == false)
            {
                return;
            }

            ClientPacketProcessor.Initialize();
            Client = new ClientConnect();
            FileClientPacketProcessor.Initialize();
            FileTransferConnect _FileTransfer = new FileTransferConnect();

            Application.Run();
        }
Пример #4
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //Events
            ClientDisconnectEvent.ClientDisconnect += new ClientDisconnectHandler(onClientDisconnect);

            CheckForIllegalCrossThreadCalls = false;

            settings.MainForm   = this;
            _listener           = new List <RatClientListener>();
            _FileListener       = new List <FileClientListener>();
            maxConnections      = new MaxConnections();
            File_maxConnections = new File_MaxConnections();
            ClientPacketProcessor.Initialize();
            FileClientPacketProcessor.Initialize();
        }
Пример #5
0
        private void Client_BeginReceive(IAsyncResult ar)
        {
            try
            {
                if (_client.EndReceive(ar) > 0)
                {
                    _buffer = new byte[BitConverter.ToInt16(_buffer, 0) - 2];

                    if (_buffer.Length > 10000) //ignore packets that are bigger then 10kb
                    {
                        return;
                    }

                    if (_buffer.Length > 0)
                    {
                        _client.Receive(_buffer, 0, _buffer.Length, SocketFlags.Partial);

                        _buffer = CryptEngine.Crypt(_buffer);

                        //Process the packet.
                        Type pck = ClientPacketProcessor.ProcessPacket(_buffer);
                        if (pck != null)
                        {
                            ReceiveBasePacket rbp = (ReceiveBasePacket)Activator.CreateInstance(pck, this, _buffer);
                            rbp.Run();
                        }

                        Read();
                        return;
                    }
                }
            }
            catch
            {
                if (!_client.Connected)
                {
                    TryToConnect();
                }
            }
        }
Пример #6
0
        protected override void OnConnect()
        {
            EODataChunk wrap = new EODataChunk();
            StartDataReceive(wrap);

            m_packetProcessor = new ClientPacketProcessor(); //reset the packet processor to allow for new multis
        }
Пример #7
0
        private void ReadCallbackStatic(IAsyncResult ar)
        {
            try
            {
                if (_socket.EndReceive(ar) > 1)
                {
                    if (_FloodProtector.HandleFlood(_socket.RemoteEndPoint) == false)
                    {
                        Disconnect();
                        return;
                    }

                    //Get length from the buffer, convert to Int16 and read the rest of the packet.
                    _buffer = new byte[BitConverter.ToInt16(_buffer, 0) - 2]; //-2 for the length, we already read that :P

                    if (_buffer.Length > 10000)                               //ignore packets that are bigger then 10kb
                    {
                        return;
                    }

                    if (_buffer.Length > 0)
                    {
                        _socket.Receive(_buffer, _buffer.Length, SocketFlags.Partial);
                        _buffer = CryptEngine.Crypt(_buffer, NetworkKey);
                        Type pck = ClientPacketProcessor.ProcessPacket(_buffer, _socket.RemoteEndPoint.ToString());
                        if (pck != null)
                        {
                            ReceiveBasePacket rbp = (ReceiveBasePacket)Activator.CreateInstance(pck, this, _buffer);
                            rbp.Run();
                            settings.ReceivedPackets++;
                        }
                        else
                        {
                            //unknown packet received
                            Disconnect();
                            return;
                        }

                        Read();
                        return;
                    }
                    else
                    {
                        //Disconnect when no length is given... maybe flood? just disconnect :P
                        Disconnect();
                        return;
                    }
                }
                else
                {
                    Disconnect();
                    return;
                }
            }
            catch
            {
                if (!_socket.Connected)
                {
                    Disconnect();
                }
                return;
            }
        }