コード例 #1
0
        /// <summary>
        /// 根据命令类型返回相关响应类
        /// </summary>
        /// <param name="header"></param>
        /// <param name="bodyBytes"></param>
        /// <returns></returns>
        private static BaseMsg GetSocketRespByHeader(MsgHeaderEnt header, byte[] bodyBytes)
        {
            //  todo 完善信息
            BaseMsg resp = null;

            switch (header.CommandType)
            {
            case CommandType.ConnectResp:
                resp = new ConnectResp(bodyBytes, header);
                break;

            //case CommandType.DeliverResp:
            //    resp = new DeliverResp(bodyBytes, header);
            //    break;
            case CommandType.SubmitResp:
                resp = new SubmitResp(bodyBytes, header);
                break;

            case CommandType.ActiveTest:
                resp = new ActiveTestReq(bodyBytes, header);
                break;

            case  CommandType.ActiveTestResp:
                resp = new ActiveTestResp(bodyBytes, header);
                break;

            default:
                resp = new UnKnowResp(bodyBytes, header);
                break;
            }
            return(resp);
        }
コード例 #2
0
        /// <summary>
        ///    获取响应实体
        /// </summary>
        /// <param name="socket"></param>
        /// <returns></returns>
        private static BaseMsg GetSocketResp(Socket socket)
        {
            byte[] headerBytes = GetBytesFromSocket(socket, MsgHeaderEnt.HeaderLength);

            MsgHeaderEnt header = new MsgHeaderEnt(headerBytes);

            if (header.TotalLength > 65536 || header.TotalLength == 0)
            {
                throw new ArgumentOutOfRangeException("socket", "当前socket包不正确");
            }

            int bodyLength = (int)header.TotalLength - MsgHeaderEnt.HeaderLength;

            byte[] bodyBytes = GetBytesFromSocket(socket, bodyLength);

            return(GetSocketRespByHeader(header, bodyBytes));
        }