国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Socket 例子

2019-11-14 23:15:06
字體:
來源:轉載
供稿:網友
Socket 例子

package com.pab.util;

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;import java.util.List;import java.util.PRoperties;

import org.slf4j.Logger;import org.slf4j.LoggerFactory;

/** * 平安銀行 * @author jian.zhou */public class PabUtil {/** 不允許實例 */private PabUtil() {super();}

private final static Logger log = LoggerFactory.getLogger(PabUtil.class);

private static final int[] FIELD_LENGTH_INDEX = new int[] { // 用來計算各個字段的在報文頭中的長度和位置1, 7, 9, 11, 31, 41, 47, 52, 54, 62, 68, 88, 94, 194, 195, 198, 199, 200, 212, 222, 223 };

private static int[] FIELD_LENGTH = new int[FIELD_LENGTH_INDEX.length]; // 紀錄各個字段的字節表示在數組中的起始位置,最后一位是補位-為方便解析而添加

static {for (int i = 0; i < FIELD_LENGTH_INDEX.length; i++) {FIELD_LENGTH[i] = FIELD_LENGTH_INDEX[i] - 1;}}

/** * 截取字節 * @param src * @param begin * @param end * @return */public static byte[] subBytes(byte[] src, int begin, int end) {int len = end - begin;byte[] bs = new byte[len];for (int i = begin; i < begin + len; i++)bs[i - begin] = src[i];return bs;}

/** * 發送報文 * @param msg 報文 * @return String[] = backArray[0]狀態 = succ, fail, backArray[1] = 返回的報文 */public static String[] sendPacket(String msg, Properties prop) {log.info("PAB 110001 SEND PACKET IS:{}", msg);Socket socket = null;BufferedInputStream bi = null;BufferedOutputStream bo = null;InputStream in = null;String backMsg = "";String[] backStr = new String[2];String ip = prop.getProperty("merCustomIp");int port = Integer.parseInt(prop.getProperty("pfxPassWord"));try {// 客戶端socket指定服務器的地址和端口號socket = new Socket(ip, port);socket.setSoTimeout(30000);log.info("{}", socket);

OutputStream ops = socket.getOutputStream();bo = new BufferedOutputStream(ops);bo.write(msg.getBytes(PabContants.PINGAN_CODE_UTF8));bo.flush();

in = socket.getInputStream();bi = new BufferedInputStream(in);byte[] hb = new byte[PabContants.PACKET_HEAD_LENGTH];// 讀取固定報文頭 長度為222bi.read(hb, 0, PabContants.PACKET_HEAD_LENGTH);

log.info("PAB 110001 BACK PACKET HEAD IS:{}", new String(hb, PabContants.PINGAN_CODE_UTF8));

// 截取報文頭 長度 222 位zString[] packetHead = new String[FIELD_LENGTH_INDEX.length - 1];// 報文數組int j = 0;for (int i = 1; i < FIELD_LENGTH.length; i++) {int start = FIELD_LENGTH[i - 1];int end = FIELD_LENGTH[i];byte[] b = subBytes(hb, start, end);packetHead[j] = new String(b, PabContants.PINGAN_CODE_UTF8);j++;}log.info("pakcetHead {}", Arrays.toString(packetHead));

// 根據開發文檔 報文頭的返回碼為000000,表示后續存在xml報文體if ("000000".equals(packetHead[11])) {log.info("---start receive packet body----");

int parcketLength = Integer.parseInt(packetHead[4]);byte[] backmsg = new byte[parcketLength];int cnt = 0;int iLen = 0;while (cnt < (parcketLength)) {iLen = bi.read(backmsg, cnt, parcketLength);cnt += iLen;}

backMsg = new String(backmsg, PabContants.PINGAN_CODE_UTF8);backStr[0] = "succ";backStr[1] = backMsg;log.info("PAB 110001 BACK PACKET HEAD BODY IS:" + backStr[1]);log.info("---end receive packet body----");} else if ("YQ9996".equals(packetHead[11])) {backStr[0] = "confirm";backStr[1] = packetHead[11] + ":" + packetHead[12];} else {backStr[0] = "fail";backStr[1] = packetHead[11] + ":" + packetHead[12];log.info("trans error--- packetBody is not, backcode:" + packetHead[11] + ":" + packetHead[12].trim());}

} catch (Exception e) {log.error("{}", e);} finally {try {if (bi != null) {bi.close();}if (bo != null) {bo.close();}if (socket != null) {socket.close();}} catch (IOException e) {log.error("", e);}}return backStr;}

/** * 判斷是否為空 * @param str * @return */public static String isNull(String str) {if (str == null) return "";else return str;}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彰武县| 准格尔旗| 葫芦岛市| 建始县| 白朗县| 津市市| 肃南| 楚雄市| 耿马| 富民县| 曲麻莱县| 宁乡县| 伊金霍洛旗| 斗六市| 赫章县| 通江县| 铜陵市| 武胜县| 扎兰屯市| 舒兰市| 龙岩市| 嘉鱼县| 驻马店市| 广安市| 无锡市| 太湖县| 康平县| 庄浪县| 泸溪县| 太保市| 化州市| 鄂托克旗| 沈阳市| 桓台县| 新源县| 和林格尔县| 沐川县| 舞钢市| 京山县| 高邮市| 福建省|