Beispiel #1
0
        /// <summary>
        /// 处理请求的
        /// </summary>
        /// <param name="requstCode"></param>
        /// <param name=""></param>
        public void HandleRequst(RequstCode requstCode, ActionCode actionCode, string data, Client client)
        {
            BassController controller;
            bool           isGet = controllorDict.TryGetValue(requstCode, out controller);

            if (isGet == false)
            {
                Console.WriteLine("无法得到" + requstCode + "所对应的controller,无法处理请求");
                return;
            }
            string     methodName = Enum.GetName(typeof(ActionCode), actionCode);
            MethodInfo mi         = controller.GetType().GetMethod(methodName);

            if (mi == null)
            {
                Console.WriteLine(controller.GetType() + "在controller没有对应的的处理方法" + methodName);
            }
            object[] parameters = new object[] { data, };
            object   o          = mi.Invoke(controller, parameters);

            if (o == null || string.IsNullOrEmpty(o as string))
            {
                return;
            }

            server.SendResponse(client, requstCode, o as string);
        }
Beispiel #2
0
        /// <summary>
        /// 表示我门现在增加了多少数据
        /// </summary>
        //public void AddCount(int count)
        //{


        //    _startIndex += count;

        //}

        /// <summary>
        /// 解析数据,newDataAmount新消息的数据
        /// </summary>
        public void ReadMessage(int newDataAmount)
        {
            _startIndex += newDataAmount;
            while (true)
            {
                //首先数据长度大于4
                if (_startIndex <= 4)
                {
                    return;
                }
                //将byte数据转成值类型
                int count = BitConverter.ToInt32(_data, 0);
                if (_startIndex - 4 >= count)
                {
                    //Console.WriteLine(_startIndex);
                    //Console.WriteLine(count);
                    ////从第四个开始都数据,因为0-3为数据长度
                    //string s = Encoding.UTF8.GetString(_data, 4, count);
                    //Console.WriteLine("解析出一条数据" + s);

                    //解析数据前面的第一个枚举
                    RequstCode requstCode = (RequstCode)BitConverter.ToInt32(_data, 4);
                    //解析数据前面的第二个枚举
                    ActionCode actionCode = (ActionCode)BitConverter.ToInt32(_data, 8);

                    //解析数据
                    string s = Encoding.UTF8.GetString(_data, 12, count - 8);

                    //将剩余的数据移动到前面,更新数据,第一个参数是要复制的数组,第二个是说从什么位置开始复制,第三个是说复制到一个新的数组,第四个说从0开始,第5个是说数组的长度
                    Array.Copy(_data, count + 4, _data, 0, _startIndex - 4 - count);;
                    _startIndex -= (count + 4);
                }
                else
                {
                    break;
                }
            }
        }
Beispiel #3
0
 public void HandleRequst(RequstCode requstCode, ActionCode actionCode, string data, Client client)
 {
 }
Beispiel #4
0
 public void SendResponse(Client client, RequstCode requstCode, string data)
 {
     //给客户端响应
 }