Socket通信接口对接

在项目中遇到对接Socket通信的接口,传输的信息没有开始符号,结束符号及中间分隔符,传送信息的每段长度都固定,第一次遇到这种接口,记录下来以供参考,基本逻辑就是这样,一般来说我们这都是客户端,那一方为服务端,我们只需要写一个发送消息的客户端即可,代码涉及机密已做处理。

try {
        Socket socket = new Socket("host", port);
        logger.info("连接已经建立"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        //一般来说接口多以字符串形式右补空格,总字符长度固定,使用format可以右补空格,"%1$-10s"的意思为不满10位则右补空格
    
        user = String.format("%1$-10s",user);
        SimpleDateFormat yymmdd = new SimpleDateFormat("yyyymmdd");
        Date date = new Date();
        String date = yymmdd.format(date);
        logger.info("本次查询时间为:" + times + "   账户名为:  " + user);
        //拼接要发送的字符串
        String sendmsg = XXX + date +user
        OutputStream outputStream = socket.getOutputStream();
        //发送消息
        outputStream.write(msg_send.getBytes());

        //接收服务器端的响应
        InputStream inputStream = socket.getInputStream();
		//把数据放到byte数组中,可以指定接收多少长度的数据
        byte[] headBytes = new byte[36];
        logger.info("开始读取数据");
        //传入刚才new的数组,第二个参数为从数组第几个索引开始读数据,第三个参数为读多少数据,一般读的是数组的长度
        inputStream.read(headBytes, 0, headBytes.length);
        logger.info("读取完成");
    	 /*public String(byte bytes[], int offset, int length)  String的构造方法,通过这个方法把存在byte数组中的数据转化成字符串
   		第一个参数为存放数据的byte数组,第二个是从第几位开始读取,第三个为读取多少个*/ 
  		String xxx= new String(headBytes , 142, 10).trim();
  		//刷新缓冲区
        outputStream.flush();
        outputStream.close();
        inputStream.close();
        //关闭连接!!!
        socket.close();
        return serviceCallIntfResponse;
        }catch (Exception e){
        	socket.close();
            logger.info(e.getLocalizedMessage());
        }

有写的不好的地方请大家给出建议 (ಥ_ಥ)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值