コード例 #1
0
ファイル: RC.cs プロジェクト: MinedroidFTW/ForgeCraft
        byte[] HandleMessage(byte[] buffer)
        {
            try
            {
                int length = 0; byte msg = buffer[0];
                switch (msg)
                {
                case 0x00: length = 0; break;                         //Keep alive

                case 0x01: length = BitConverter.ToInt16(buffer, 1) +
                                    BitConverter.ToInt16(buffer, BitConverter.ToInt16(buffer, 1) + 3) + 4; break;             //Username/Password

                default:
                    Server.Log("unhandled message id " + msg);
                    Kick("Unknown Packet id: " + msg);
                    return(new byte[0]);
                }
                if (buffer.Length > length)
                {
                    byte[] message = new byte[length];
                    Buffer.BlockCopy(buffer, 1, message, 0, length);

                    byte[] tempbuffer = new byte[buffer.Length - length - 1];
                    Buffer.BlockCopy(buffer, length + 1, tempbuffer, 0, buffer.Length - length - 1);

                    buffer = tempbuffer;

                    //if(username!= "Merlin33069") Server.Log(msg + "");
                    switch (msg)
                    {
                    case 0x01: HandleLogin(message); break;
                    }
                    if (buffer.Length > 0)
                    {
                        buffer = HandleMessage(buffer);
                    }
                    else
                    {
                        return(new byte[0]);
                    }
                }
            }
            catch (Exception e)
            {
                Server.Log(e.Message);
                Server.Log(e.StackTrace);
            }
            return(buffer);
        }
コード例 #2
0
ファイル: RC.cs プロジェクト: MinedroidFTW/ForgeCraft
        public RC(Socket a)
        {
            s = a;
            try
            {
                ip = a.RemoteEndPoint.ToString().Split(':')[0];
                Server.Log(ip + " REMOTE CONSOLE connected to the server.");
                asen = new ASCIIEncoding();

                a.BeginReceive(tempbuffer, 0, tempbuffer.Length, SocketFlags.None, new AsyncCallback(Receive), this);
                SendRaw(0xFE);
            }
            catch (Exception e)
            {
                Server.Log(e.Message);
                Server.Log(e.StackTrace);
            }
        }
コード例 #3
0
        public static void donow(string command)
        {
            SQLiteCommand comm = new SQLiteCommand();

            comm.Connection  = con;
            comm.CommandText = command;

            try
            {
                comm.ExecuteNonQuery();
            }
            catch (SQLiteException exception)
            {
                Server.Log("Failed :" + exception.Message);
            }
            catch (Exception e)
            {
                Server.Log("Failed :" + e.Message);
            }
        }
コード例 #4
0
ファイル: RC.cs プロジェクト: MinedroidFTW/ForgeCraft
        static void Receive(IAsyncResult result)
        {
            RC rc = (RC)result.AsyncState;

            if (rc.disconnected || rc.s == null)
            {
                return;
            }
            try
            {
                int length = rc.s.EndReceive(result);
                if (length == 0)
                {
                    rc.Disconnect(); return;
                }

                byte[] b = new byte[rc.buffer.Length + length];
                Buffer.BlockCopy(rc.buffer, 0, b, 0, rc.buffer.Length);
                Buffer.BlockCopy(rc.tempbuffer, 0, b, rc.buffer.Length, length);

                rc.buffer = rc.HandleMessage(b);
                rc.s.BeginReceive(rc.tempbuffer, 0, rc.tempbuffer.Length, SocketFlags.None,
                                  new AsyncCallback(Receive), rc);
            }
            catch (SocketException e)
            {
                rc.Disconnect();
            }
            catch (ObjectDisposedException e)
            {
            }
            catch (Exception e)
            {
                Server.Log(e.Message);
                Server.Log(e.StackTrace);
            }
        }