通Unix下C语言编程与项目实践》之十一
数据传输技术之字符串报文 
作者:朱云翔,胡平

第18章 数据传输技术之字符串报文

在计算机程序中经常需要进行数据交换,通常做法是先将要交换的数据按照一定的格式组合起来,再把这些组合数据作为一个整体传递给对方。这个经过组合的数据就是报文,每个要交换的数据就是数据域,将数据域组合成报文的过程称为报文组包或报文打包,从报文中提取出数据域的过程称为报文解包或者报文解析。
报文的组织形式多种多样,常见的有字符串报文、8583包报文、XML报文、结构报文等等,某些程序甚至可以定义自己的报文组织形式。

18.1 字符串报文简介

字符串报文就是由各种不同数据类型的数据域组合而成的一行字符,数据在组包前必须先要转化成字符串格式,然后才能构成字符串报文。同样的,字符串报文在解包时,也要先分解出字符串型的数据域,再将这些字符串转化为特定类型的数据值。

18.1.1 字符串报文类型

字符串报文是指将各种不同数据类型的数据域信息转化为字符串,再组合成一行字符的报文形式。根据报文中同一数据域每次所占用的字符字节数的情况,字符串报文可以分为以下几种:

1. 固定长度字符串报文

简称固定长度报文,报文中的每个数据域在报文中都占用某个特定的字节长度,不会随着数据域具体内容的变化而变化。如18-1是某个银行代发工资系统中固定长度字符串报文文件的例子:

表18-1 固定长度字符串报文
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
1
9
5
5
9
9
0
1
0
9
9
9
9
9
z
y
x
 
 
 
 
 
 
 
 
1
2
3
4
.
2
1
2
5
3
5
9
1
0
1
0
9
8
8
 
 
h
u
p
i
n
g
 
 
 
 
1
9
7
3
2
.
0
1
1
卡号域,13个字节长度
姓名域,6字节
资金域,12字节

以上每条报文均长32个字节,分为4个数据域,每个域的含义如表18-2所示:
表18-2 固定长度字符串报文实例解析
编号
长度
说明
类型
第一行内容
第二行内容
1
1
行序号
整型
1
2
2
13
卡号
字符串
9559901099999
53591010988
3
6
姓名
字符串
zyx
huping
4
12
资金
浮点型
1234.21
19732.01

2. 固定分隔字符串报文

简称固定分隔报文,报文中的每个数据域在报文中占用的字节长度不固定,域与域之间通过某个特定的字符串来分隔,如表18-3是由字符串“|”分隔的报文实例。

表18-3 固定分隔字符串报文
以上报文与表18-1中的固定长度报文描述的是同一实例,但此处第1条报文长26字节,第2条报文长28字节,可见固定分隔字符串报文的每条报文长度并不一致,同时每个数据域中一般不会有多余的空格。

3. 混合格式字符串报文

简称组合报文,它混和了前两种报文的组织格式,一般有三种表现形式:
(1) 固定长度报文中某数据嵌套一个固定分隔报文,如表18-4所示;
表18-4 固定长度报文嵌套固定分隔报文

整个报文全长28个字节,共分为3个数据域。其中第二个数据域长15个字节,由一个固定分隔报文组成。这个固定分隔报文以字符串“,”分隔开,共两个域,第一个域表示姓名,第二个域表示资金。
(2) 固定分隔报文中某数据域嵌套一个固定长度报文,如表18-5所示:
表18-5 固定分隔报文嵌套固定长度报文

第1条报文长29个字节,第2条报文长27个字节,共分为3个数据域。其中第二个数据域由一个固定长度报文组成,这个固定长度报文分为两个域:第一个域表示姓名,共6个字节;第二个域表示资金,共8个字节。
(3) 固定长度报文的数据域之间由字符串之间通过某个特定的字符串来分隔,如表18-6是由字符串“|”分隔的报文实例:
表18-6 固定字符串分隔的固定长度报文

整个报文全长22个字节,共分为3个数据域,每个域分别长4字节、6字节和10字节,域与域之间通过字符串“|”分隔。

18.1.2 字符串报文传送方式

字符串报文具有简单和便于理解的特点,因此被广泛的运用于实际的数据传送中。一般来讲,字符串报文的传送有两种最常见的方式:报盘方式和实时交易方式:

1. 报盘方式

本方式一般应用于批量业务中。比如某单位委托银行为其员工代发工资,单位将先把每个员工的工资信息组包成一条字符串报文,然后把这些报文合写在一个文件中,最后把这个文件通过手工或自动FTP等方式传送给银行。银行则解析此文件中的每一条报文信息,然后执行批量代发业务。

2. 实时交易方式

本方式一般应用于零星业务中。比如每当有交易发生时,ATM都将交易的基本信息组包成一条字符串报文,然后将这个字符串通过套接字通信等方式发送到银行主机。银行主机则解析此条报文信息,再执行相应的交易。

本文转自 zhuyunxiang 51CTO博客,原文链接:http://blog.51cto.com/zhuyunxiang/139505,如需转载请自行联系原作者

银行程序代发工资的方法相关推荐

  1. 某银行网银代发工资无法操作问题解决

    在银行方面通知网上银行代发工资功能不能应用时,我们及时排查了整个服务架构的问题所在,最后锁定ssl加密服务器对网银系统发出的代发工资命令给予了拦截,而其他功能都可以正常运行. 通过对ssl服务器的链接 ...

  2. 某支付系统调用银行侧数字货币代发接口处理代发工资用例描述

    一.简要概述 通过某支付系统平台发放,支持调用银行侧数字货币代发接口处理代发工资指令,发放数字货币形式的工资到建筑工人个人钱包(含其他运营机构). 资金路径:对公钱包--个人钱包. 涉及产品:数字货币 ...

  3. 通过网银渠道代发工资业务流程

    通过网银渠道代发工资实操业务流程: 银行平台代发端:客户提交代发工资指令(A). 附件解析程序:接收解析客户上传的代发工资单文件(B),解析不通过时反馈客户. 代发手续费计算程序:计算应收代发手续费( ...

  4. 个税应用案例|为什么这么多优秀的企业选择在招行代发工资?

    中国移动.国家电网.腾讯.阿里.字节跳动.泰康人寿.宁德时代.格力电器.顺丰速运--在代发工资这件事上,很多央企和行业头部企业都有一个共同的选择--招商银行.当前,招行已为近300家全国500强企业和 ...

  5. 2020 年 5 月程序员工资统计,平均 14542 元,我又拖后腿了!

    点击上方"视学算法",选择加"星标"置顶 重磅干货,第一时间送达 来源/作者:有数可据     转载自:算法爱好者 https://blog.csdn.net/ ...

  6. 废掉一个程序员最好的方法,让他忙碌着,忙碌到没时间思考

    文|洪生鹏,来自|爱开发 01 好友老张最近又跳槽了,薪资比之前翻了一番,电话里说要请我们吃饭,印象中老张几乎是一年一跳.老张是一名java程序员,工作6年已经跳槽4次了.加上这次算5次了. 对于程序 ...

  7. CSDN日报191105:2019年11月全国程序员工资统计,区块链工程师比算法工资高

    CSDN日报来啦!给大家奉上当日最新鲜的技术干货! 2019年11月全国程序员工资统计,区块链工程师比算法工资高 作者:有数可据 我每个月第一天(也许是第二天,第三天),会爬招聘网站,并在CSDN发布 ...

  8. 2020 年 5 月全国程序员工资出炉!

    来自:网络 5月份程序员工资新鲜出炉,平均14542元! 希望能给各位同学有所参考,数据来源于招聘网站,可能与实际情况有所偏差. 整体上来说,应该还是在正态分布的范围内. 平均工资 2020年5月全国 ...

  9. 2019年9月全国程序员工资统计。

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://tinyurl.com/y65y3vbc # ...

最新文章

  1. python实现二分查找(折半查找)算法
  2. NEFU704(AC自动机+状态压缩)
  3. 当前不会命中断点_原神:体验服新角色胡桃,0命就能起飞,难道是策划良心发现了?...
  4. OCR识别之图像预处理
  5. 领英:经济图谱在中国,为人才就业勾画新版图
  6. unity可以直接转h5吗_瞎折腾:用Unity撸纯HTML5移动游戏/应用
  7. qnap自带有mysql吗_关于威联通QNAP NAS应用—Container Station 容器套件
  8. 树莓派做微信公众号服务器,树莓派与微信公众号对接(python)
  9. 大数据第一季--Hadoop(day4)-徐培成-专题视频课程
  10. 如何用python做兼职_python学会后可以干什么副业#做什么兼职副业好
  11. 普通高等学校毕业生登记表 计算机水平,普通高等学校全日制毕业生登记表自我鉴定怎么写...
  12. .Net中使用数据库(sqlite)的大体流程(简单向)
  13. FreeIPA FreeRadius FreeOTP 实现双因素认证登录
  14. Win10系统新款便笺便签居然可以这么好用
  15. mac 打开html文件乱码,mac打开txt文件乱码解决方法
  16. 【Trick】调优方法warmup
  17. COM:根系微生物组研究中的合成群落还原法
  18. 2022年下半年软件评测师考试真题一些回忆
  19. 高校GIS系统有何作用?
  20. 腾讯2022应届生校招总包40W

热门文章

  1. redis 通过aof日志恢复_宕机了,宕机了,Redis数据丢了怎么办?
  2. linux从指定网卡scp文件出去,Linux下nc或scp命令来实现文件传输
  3. html中的js点击ipunt后加一,iphone 端 ipunt输入框光标偏移
  4. android怎么监听多点触摸_大尺寸触摸屏厂家定制多点触摸框
  5. android选择下拉框的默认值,如何在Android中将默认值设置为微调器下拉列表?
  6. 华硕笔记本电池0%充不进电_笔记本电脑电池充不进电如何解决【解决方法】
  7. FPGA的LVDS电平以及LVDS25电平能在HR Bank上使用吗?
  8. 【 MATLAB 】xcorr 函数介绍(互相关)简介
  9. 【 Verilog HDL 】Verilog 迭代连接运算符
  10. js中给数组中对象去重