/// <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); }
/// <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)); }