/// <summary> /// 构造一个新的协议并初始化协议头部. /// </summary> /// <param name="request">一级,类</param> /// <param name="action">二级,方法</param> /// <param name="returncode">三级,返回值</param> public ProtocolBytes(ERequestCode request, EActionCode action, EReturnCode returncode = EReturnCode.None) { RequestCode = request; ActionCode = action; ReturnCode = returncode; AddInt((int)RequestCode); AddInt((int)ActionCode); AddInt((int)ReturnCode); }
/// <summary> /// 消息分发 /// </summary> /// <param name="conn"></param> /// <param name="protocolBase"></param> private void HandleMsg(Conn conn, ProtocolBase protocolBase) { ERequestCode requestCode = protocolBase.RequestCode; EActionCode actionCode = protocolBase.ActionCode; Console.WriteLine($"收到来自[{conn.GetAddress()}]协议:[{ requestCode.ToString()}---{actionCode.ToString()}]"); BaseController controller; if (!requestDict.TryGetValue(requestCode, out controller)) { Console.WriteLine($"【警告】未找到Request:{requestCode.ToString()}对应的方法"); return; } MethodInfo method = controller.GetType().GetMethod(actionCode.ToString()); if (method == null) { Console.WriteLine($"【警告】未找到Action:{actionCode.ToString()}对应的方法"); return; } object[] objs = new object[] { conn, protocolBase }; method.Invoke(controller, objs); }