定长报文

java socket定长报文实现接口通信 因为要和银行方进行通信,所以接口通信传参就需要实现定长报文,小小的吐槽一下,最开始是json传参方式到改为xml,刚写好xml还没有试试就通知要改为定长报文,也就我脾气好,真想骂爹,骂娘,但是时间有限还是得实现啊,但是网上资料又不多,最终一点点摸索弄出来了。 首先定长报文是指像json格式那种key,value有字段有值的方式,定长报文就是String拼接的vlaue值,而没有key了,那么你就想了那我解析值或者取值怎么取我想要的对应的值呢,其实定长报文么,顾名思义就是没有了key就把值的长度固定了呀,. 阅读详情

 

2.1 定长报文

2.1.1 定长报文介绍

定长报文,应该是目前使用最广泛的报文,是报文类型中的元老级别人物了,定长报文也比较简单,理解起来也比较方便。但是定长报文也有其局限性,它的最大弱点就是担心以后所定义域的长度要加长,这个时候配置或程序就要改变。

定长报文,使用固定的长度去表示一个信息,如银行开户时开户人的名称可用30个字节表示,因为我国的人名一般不会超过15个汉字,默认可以容纳所有开户人的名称了;如果超过15个汉字怎么办,为什么不定义50个字节25个汉字的长度呢?这个如果是简单的报文再定长一点没有关系,但是从银行本身来说,存有一些贵留问题,有一些银行的报文的最大长度就只支持2K,即2048个字节;如果定义长了,发送的报文超过了2048个字节,这个时候发送报文就会被截断,造成信息丢失;如果是人名少一个字还可以根据其它的信息去判断,如果是客户存了1000000000,结果发送过去的时候刚好超长了一位被截断了一个“0”,那就麻烦大了,客户就会找银行打官司了。

因而我们在定义报文的时候,不是定义越长越好,当然也不能够定义短了,刚好满足当时的情况,如果随着后面情况的变化,这个信息域变长了,那这个程序就不适应了,则说明定义的这个报文没有时间的扩展性。如某银行原来的日期在设计的时候只设计了8位的长度,格式为"YYYYMMDD",可是后面要求是10位的"YYYY-MM-DD"日期格式,这个时候就要调整程序了。定长报文调整报文长度那可是相当痛苦的一件事,如果这个要调整的信息域是最后一个域,那相当简单,只调整一个域,但是如果这个域是第一个域,并且这个报文有数百个域,那你就知道什么叫痛苦了,一个个的调整位置,即使是配置型的,也的一个个的去数数耍了。

2.1.2 简单定长报文

我们看一下示例,就知道定长报文是个什么样的东东了;以一个储户到银行开户为例,当然我们不能够像银行一样弄那么多项把人给搞昏,弄一个非常简单的开启,只包括以下几个字段:

字段名称

字段类型

字段长度

说明

示例值

交易类型

Char

8

定义交易的类型,

00000001:柜台交易

00000001

交易码

Char

4

0001:表示开户

0002:表示销户

0001

客户名称

Char

30

开户人的名称

张三的表哥

客户地址

Char

60

开户人当前所住地址,不可以超过30个汉字

张三的表哥家隔壁的王大娘的邻居的朋友的大姨家楼上

身份证号码

Char

18

只可以是15位或18位

123456789987654

开户资金类型

Char

2

01:人民币

02:美元

03:英镑

04:其它

01

开户日期

Char

10

开户日期

2009-09-09

以上两个带蓝底的字段表示交易附加的信息字段,以便于系统识别是什么类型的交易,以及当前交易的具体操作。这个时候我们组织成报文发出去的时候就会是如下这样:

"000000010001张三的表哥                    张三的表哥家隔壁的王大娘的邻居的朋友的大姨家楼上            123456789987654   012009-09-09"

将这个报文发送给后台程序的时候,后台程序就根据以上表格中定义的标准,将接收到的报文进行解析,然后再进行处理。

2.1.3 带循环的定长报文

定长报文也会有要用到循环的时候,如网银客户需要通过网银查它在柜台交易记录,这个时候他只需要在网银上发起一个查询到核心,然后核心就将客户在柜台的交易记录以循环报文的格式返回来再展现给客户就可以了,用户就不用到柜台去了。我们对核心的返回报文做如下定义:

字段名称

字段类型

字段长度

说明

示例值

总笔数

Char

2

当前返回的总笔数

 

以下定义为循环字段,就定义两个字段

交易日期

Char

10

柜台交易的日期

 

交易金额

Char

15

柜台交易的金额

金额不可以有小数,将金额扩大100位返回,如交易金额为100.1,则返回10010,其它依次类推

这个时候假设客户有两笔交易,分别是2009-09-09发生了一笔123.45元的交易及2010-10-10发生了一笔23456的交易,此时用户在网银收到的报文就该是如下:

"22009-09-0912345          2010-10-102345600        "

网银首先获取返回的记录数,再循环展示给客户就可以了。

本文出自:冯立彬的博客



Java 实现定长报文模拟器(支持配置文件 & 默认值) 未提供默认值,将自动生成随机值。\t 表示制表符,比如从excel编辑数据后粘贴到txt文件会带有制表符。,按字段顺序、名称、偏移量、长度、默认值读取。,如未提供则自动生成随机字符串。,可支持 JSON 配置、变长字段等。,如未提供,则自动填充随机值。,适用于大批量报文生成。(6位,自动填充随机值),确保格式符合规范。(FIX 协议) 📌。 阅读详情

相关推荐

Java注解配置的定长报文生成

Java注解作为一种特殊配置信息,在springboot自动配置中大放异彩。这种配置信息直接与类相关联,即配置发生在使用的地方,显得非常直观。另外,从jdk1.8以后,注解可以重复标记,因此对于一些分组的逻辑控制方便了许多。 最近在项目中有很多通过定长报文与银行交互的场景,这些报文就包含大量的配置信息,比如类型、长度、精度、填充字符等等。结合注解可以重复标记,设计了一个使用注解提供配置信息,创建...

lydck_2013的博客 1548

2020-12-16 定长报文

转存失败重新上传取消正在上传…重新上传取消 今天在写测试用例,遇到bug不懂去问,郭哥。 忽然被郭哥 定长是什么? 定长是什么? 定长是什么? 给我整蒙了,在一顿操作后,我下来立马整理一下 “定长是什么的知识” 定长报文,是目前使用最广泛的报文,同时比较简单的报文格式,效率高效,理解起来也较为简单,但定长报文也有自身的局限性。其中最大的问题在于,如果定义域的长度需要加长,这时候相关的配置与程序代码都需要进行相应的改变,所以维护很不方便。 简明来说,定长报文就是采用固定长度表...

qq_40547893的博客 1124

Qt 如何 发送与解析不定长报文以及数组不定长报文

sum:和校验sum check,也即:从报文头(含)到data域(含)的所有字节的和的低8位。在我这边data是循环数组数据,而数组的具体数据是PacketSubData结构体数据,数组的长度以来dataValueNum值,如果是3,说明有三组数据,2就说明二组数据。如果你的需求比较简单,可以从结构体中删掉一些你不想用的字段,例如,你只想传输uint16数据,那么接收方无需判定type字段,也能知道data域是个u16,接收方无法判定len字段,也能知道data域的长度为2字节。

波风水门 1032

报文心得

写这篇博客前,应该感谢一下对我有传道之恩的师傅——鲍迅 多系统之间,通过TCP交互,那么报文在这其中起到了异常关键的作用,对于报文,有一些很零碎的小小的心得,在此做一下分享(代码中没太注意大小写书写)。 一、普通报文 a.  在标签中可以加“xmlns”类似于网址的东西(其实具体有什么卵用我还真不知道,目前所有的拼接都是为了格式严谨),放在xmlAttributes属性中,格式如下:

u014306128的专栏 3972

JAVA XML \ 定长报文 与domino转换及通讯

JAVA XML \ 定长报文 与domino转换及通讯 参考链接 https://blog.youkuaiyun.com/chouyan1884/article/details/82870030

保姆级教程:如何用Le2i Fall Detection Dataset训练你的跌倒检测模型(附数据集下载)

本文提供了一份详细的实战指南,教你如何使用Le2i Fall Detection Dataset训练跌倒检测模型。内容涵盖数据集的深度解析、预处理与工程化管道搭建、模型选择与训练策略,以及评估优化与部署考量,旨在帮助开发者从零构建高精度、可应用的跌倒检测系统。

assembly8low的博客 1286

定长报文 java_报文格式:xml 、定长报文、变长报文

目前接触到的报文格式有三种:xml 、定长报文、变长报文 。此处只做简单介绍,日后应该会深入学习到三者之间如何解析,再继续更新。——2016.9.23XMLXML 被设计用来传输和存储数据。HTML 被设计用来显示数据。XML 仅仅是纯文本XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML。不过,能够读懂 XML 的应用程序可以有针对性地处理 XML 的标签。标签的...

weixin_30160343的博客 1257

Zotero PDF Translate插件实战:DeepL API免费申请与高效翻译配置指南

本文提供Zotero PDF Translate插件配置DeepL API的完整实战指南。详细介绍了如何免费申请DeepL API密钥,解决国内访问问题,并在插件中完成精细配置,实现文献阅读时的无缝划词翻译,大幅提升科研人员和学生的英文文献阅读效率。

rum55的博客 455

java高效组定长报文

java高效组定长报文

athjyh的博客 1873

无线网卡选购指南:哪些型号支持Kali Linux的监听模式?附免驱动网卡推荐

本文详细解析了如何在Kali Linux下选购支持监听模式的无线网卡。核心在于选择兼容的芯片组,如Atheros AR9271和Ralink RT3070等经典型号,并提供了免驱动网卡推荐与实战配置指南,帮助安全研究人员和爱好者快速搭建无线测试环境。

wind6的博客 1553

OpenClaw进阶实战(十二):电商比价工作流(一)——数据采集与竞品监控

本文介绍了基于OpenClaw的电商比价系统实现方案。该系统可自动化监控淘宝、京东、拼多多等平台的竞品价格波动,包含以下核心功能: 多平台价格采集:通过各平台官方API(淘宝客、京东联盟、多多进宝)获取商品价格,并提供模拟数据模式便于测试 数据存储与分析:使用SQLite存储历史价格数据,支持查询最近价格和价格变化趋势 模块化设计:采用技能化架构,分离了平台适配层(淘宝/京东/拼多多)、数据存储层和核心业务逻辑 扩展性:预留了价格波动告警接口(钉钉通知),为后续动态调价提供数据支撑 系统特点: 支持真实AP

PeterPan的博客 214

报文格式【定长报文】

定长报文,是目前使用最广泛的报文,同时比较简单的报文格式。理解起来也较为简单,但定长报文也有自身的局限性。其中最大的问题在于,如果定义域的长度需要加长,这时候相关的配置与程序代码都需要进行相应的改变,所以维护很不方便。定长报文,就是使用固定的长度来表示一个信息。本报文格式常见于金融银行业,所以以银行开户场景为例说明。

HOKING的专栏 1万+

【自适应调制】自适应调制解调通信链路误码率matlab仿真与分析

BPSK中的B是“Binary”的意思,也就是有两个变化状态,比如说相位上的“+90°(代表1)、-90°(代表0)”,一个状态代表的就是一个比特。QPSK的“Q”是“Quadrature”的意思,有四个变化状态,如相位上的“+45°(代表00)、-45°(代表11)、+135°(代表10)、-135°(代表01)”,那么一个状态就代表两个比特的信息,如图2所示。同理8PSK的一个状态代表三个比特。但是功率资源并不是无限的,基站总的发射功率是一定的,为了充分利用所有的功率,采用的就是AMC技术。

FPGA/MATLAB学习教程/源码/项目合作开发 1831

java 定长报文_Java按字节读取不定长报文

今天需要编写一个接收处理HTTP请求的服务端模拟程序,用Socket输入流接收不定长的请求报文,写了如下两个接收方式都不能很好地解决问题:1.预设一个一定长度的字节数组来接收请求报文1 byte[] recvMsg = new byte[1024];2 byte[] valiMsg = null;3 int readed = 0;4 ...

weixin_30199703的博客 1290

核心组件大换血:Backbone与Neck魔改篇:YOLO26魔改Neck:引入BiFPN(双向特征金字塔),多尺度融合能力飙升

本文深入解析了YOLO26目标检测模型中Neck部分的优化策略,重点探讨了BiFPN(双向特征金字塔网络)的原理与实现。文章首先指出YOLO26原生FPN+PAN结构在多尺度特征融合上的局限性,特别是在小目标检测和边缘部署场景中的性能瓶颈。随后系统梳理了Neck网络的演进历程,从FPN、PANet到BiFPN和ASFF,详细对比了各架构的特点。核心部分展示了如何将BiFPN引入YOLO26,包括可学习权重融合、双向跨尺度连接等关键技术实现,并提供了PyTorch代码示例。本文为需要提升小目标检测性能或优化边

ZDQ58818的博客 244

wireshark提取视频数据之RTP包中提取H264和H265

本文主要描述从wireshark包数据中提取出H264和H265裸流数据方法,裸流通过RTP封包方式发送,从抓包中直接提取视频流数据,进而进行流媒体问题定位

技术控的笔记 17万+

普通报文和定长报文

多系统之间,通过TCP交互,那么报文在这其中起到了异常关键的作用,对于报文,有一些很零碎的小小的心得,在此做一下分享(代码中没太注意大小写书写)。   一、普通报文 a.  在标签中可以加“xmlns”类似于网址的东西(其实具体有什么卵用我还真不知道,目前所有的拼接都是为了格式严谨),放在xmlAttributes属性中,格式如下: xmlAttributes="xmlns:xsi={'网...

weixin_41167961的博客 4235

innovus:sroute 双层follow pin的做法

根据std cellpower pin的层次可以分成两种情况。

m0_61544122的博客 2725

(转) 报文格式【定长报文】

定长报文简介 定长报文,是目前使用最广泛的报文,同时比较简单的报文格式。理解起来也较为简单,但定长报文也有自身的局限性。其中最大的问题在于,如果定义域的长度需要加长,这时候相关的配置与程序代码都需要进行相应的改变,所以维护很不方便。 定长报文,就是使用固定的长度来表示一个信息。本报文格式常见于金融银行业,所以以银行开户场景为例说明,例如银行柜面开户时,需要记录开户人的姓...

weixin_33923148的博客 407

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

定长报文 java_Java按字节读取不定长报文

今天需要编写一个接收处理HTTP请求的服务端模拟程序,用Socket输入流接收不定长的请求报文,写了如下两个接收方式都不能很好地解决问题:1.预设一个一定长度的字节数组来接收请求报文...今天需要编写一个接收处理HTTP请求的服务端模拟程序,用Socket输入流接收不定长的请求报文,写了如下两个接收方式都不能很好地解决问题:1.预设一个一定长度的字节数组来接收请求报文1 byte[...

weixin_39627361的博客 448

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

报文格式:xml 、定长报文、变长报文

目前接触到的报文格式有三种:xml 、定长报文、变长报文 。 此处只做简单介绍,日后应该会深入学习到三者之间如何解析,再继续更新。——2016.9.23 XML XML 被设计用来传输和存储数据。 HTML 被设计用来显示数据。 XML 仅仅是纯文本 XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML。 不过,能够读懂 XML 的应用程序可以有针...

weixin_34279246的博客 2613

FPGA之FIFO详解,缓冲不定长报文

在项目开发中经常会遇到不定长报文的处理,典型的有modbus rtu等等,对于STM32端,有过工作经验的朋友,基本都会去选择比如空闲中断+dma,因为非常适合实现不定长报文的接收,如果本身带有freertos等轻型操作系统,那么在实际项目工作中则需要考虑到消息队列的设计和缓存,那么对于FPGA端,我们应该如果去如何去缓存一帧不定长的报文呢,在这篇博客里,笔者通过一个练习举例为大家说明,在FPGA设计中常用到的缓存不定长报文的方法,其本身也具有一定的普遍性。 设计一个模块包含...

wandou0511的博客 5805

java高效组定长报文续篇3--报文字段分类

  本编文章的基础数据在java高效组定长报文续篇2–准备一些基础数据 中,这里就不重复列举了。   上篇文章的两个报文接口字段有几个特点, 大部分字段都是不含中文的字符串, 数字型的字符串只有数字和金额 有些字段的值的长度本身就是固定的 有些字段是选填的,但是无值时需要占位 报文字段分类   根据报文字段特点分类 类型 编号 填充方式 说明 普通字符串 S 右补空格 不含中文的字符串 中文字符串 C 右补空格 可含中文的字符串,如名称,附言等 普通数字 N 左补零 一般是整数

athjyh的博客 745

java 定长报文补位问题

汉字两字节,补位 定长

灯火阑珊处 4874
上一篇: 常用报文的解析与相互转换
下一篇: 关于Oracle SID存在解決办法
冯立彬
冯立彬 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄21年 5458粉丝 593原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值