@Override public ResponseVo process(ParamsVo paramsVo, String sendStr) throws IOException { ResponseVo responseVo = new ResponseVo(); Long start = System.currentTimeMillis(); try { CompanyInfo companyInfo = paramsVo.getCompanyInfo(); Socket sclient = new Socket(); sclient.connect( new InetSocketAddress( companyInfo.getTransIp(), Integer.valueOf(companyInfo.getTransPort())), 60 * 1000); sclient.setSoTimeout(paramsVo.getEdiAction().getTimeOut()); // 设置编码 ,默认为GBK String sendEnCode = "GBK"; String backEnCode = "GBK"; if (paramsVo.getChannelInfo() != null && StringUtils.isNotBlank(paramsVo.getChannelInfo().getSendEncode())) { sendEnCode = paramsVo.getChannelInfo().getSendEncode(); } if (paramsVo.getChannelInfo() != null && StringUtils.isNotBlank(paramsVo.getChannelInfo().getBackEncode())) { backEnCode = paramsVo.getChannelInfo().getBackEncode(); } OutputStream os = sclient.getOutputStream(); InputStream is = sclient.getInputStream(); BufferedReader input = new BufferedReader(new InputStreamReader(is, sendEnCode)); // 发送 os.write((sendStr).getBytes(backEnCode)); os.flush(); // 接收 StringBuffer str = new StringBuffer(); String ret = input.readLine(); while (ret != null) { str.append(ret); ret = input.readLine(); } String returnStr = str.toString(); responseVo.setResponseStr(returnStr); responseVo.setSuccessFlag(true); responseVo.setErrorType(ResponseVo.ERRORTYPE_SUCCESS); responseVo.setHttpResponseCode("200"); } catch (Exception e) { logger.error( "{},scoket 请求时出错:{}", paramsVo.getB2CInputInfo().getLogProcessId(), e.getMessage()); logger.error(e.getLocalizedMessage(), e); responseVo.setErrorType(ResponseVo.ERRORTYPE_ERROR); if (e instanceof ConnectException) { responseVo.setErrorType(ResponseVo.ERRORTYPE_CONNET); } else if (e instanceof TimeoutException || e instanceof SocketTimeoutException) { responseVo.setErrorType(ResponseVo.ERRORTYPE_TIMEOUT); } responseVo.setException(e); responseVo.setSuccessFlag(false); responseVo.setHttpResponseCode("500"); } finally { logger.info( "{},socket 处理用时 :{}", paramsVo.getB2CInputInfo().getLogProcessId(), System.currentTimeMillis() - start); } return responseVo; }