Socket通信接口对接

这篇博客记录了一次对接Socket通信接口的经验,该接口采用固定长度的无开始和结束符号的数据传输方式。博主创建了一个发送消息的客户端,通过格式化字符串确保信息长度固定,并展示了如何发送和接收数据的过程。在接收服务器响应时,使用了`read`方法读取指定长度的数据。文章最后提到,代码中涉及敏感信息已处理,并欢迎大家提出改进建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中遇到对接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());
        }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值