博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
银行程序代发工资的方法
阅读量:6936 次
发布时间:2019-06-27

本文共 2171 字,大约阅读时间需要 7 分钟。

通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,如需转载请自行联系原作者
你可能感兴趣的文章
[Python] Hermite 插值
查看>>
带头节点的单链表的插入操作优化
查看>>
winSockets编程(七)WSAAsyncSelect模式
查看>>
Huffman Codes
查看>>
求一棵二叉树的镜像
查看>>
Principal Component Analysis(PCA) algorithm summary
查看>>
【安装Ubuntu 遇到问题】 the system is running in low-graphics mode 最新办法解决
查看>>
达拉草201771010105《面向对象程序设计(java)》第十八周学习总结
查看>>
Mysql中文输入出现1366错误的解决办法
查看>>
Ant调用Java中文显示乱码
查看>>
database工具
查看>>
[转] JavaScript 运行机制详解:再谈Event Loop
查看>>
我的转正申请
查看>>
【leetcode】509. Fibonacci Number
查看>>
day10--进程
查看>>
结构训练
查看>>
查询数据库保存成CSV格式
查看>>
enumerate
查看>>
PHP三元运算符 isset的理解
查看>>
dede织梦:文章内容页调用
查看>>