银行程序代发工资的方法

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:
通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,如需转载请自行联系原作者

相关文章
|
6月前
|
安全 API UED
【支付宝推荐】企业转账如何又快又省?试试“商家转账”吧!
企业面对日益增长的转账需求,财务操作繁琐、效率低下。但支付宝的“商家转账”服务为企业提供了数字化资金通道,实现0费率、批量处理、实时到账。适用于零工薪酬、佣金、营销激励等多种场景,已覆盖灵活用工、物流、出行、家政服务等多行业。该服务提供无需开发的批量转账产品和API接口产品,支持定制化行业解决方案。如需接入,可点击链接留下信息以获取联系。
【支付宝推荐】企业转账如何又快又省?试试“商家转账”吧!
|
11月前
|
机器人
用八爪鱼RPA实现员工薪资管理,轻松拆分发放工资单!
RPA(机器人流程自动化)技术可以极大地压缩、优化现有的员工薪资管理流程。通过使用rpa机器人,可以自动化个税计算和申报,自动化工资单处理和发放等重复性、繁琐的任务。这样可以节省大量人力和时间,提高工作效率,减少错误和延误,提升员工满意度。同时,rpa还可以保证数据的准确性,提高工资管理的合规性,增强企业的信誉。
|
程序员 PHP 项目管理
一个PHP程序员,想要从月薪1万元变成月薪2万元,他应该怎么做?
一个PHP程序员,想要从月薪1万元变成月薪2万元,他应该怎么做?
133 0
|
程序员 PHP 敏捷开发
一个PHP程序员,想要从月薪1万元变成月薪5万元,他应该怎么做?
一个PHP程序员,想要从月薪1万元变成月薪5万元,他应该怎么做?
145 0
|
网络协议 测试技术 Go
家庭收支记账项目介绍|学习笔记
快速学习家庭收支记账项目介绍
|
定位技术
为什么不应该根据员工的住所支付工资
  Facebook的薪资决定树立了危险的先例   在我的整个技术职业生涯中,我一直是远程工作的拥护者-碰巧的是,这是从完全远程的演出开始的。 我一直认为,分布式工作模型是一种根本性的破坏性技术,其明显优势将不可避免。   上周,Facebook宣布了一项关于让(一些)员工随处居住的地方,从而引发了长期争议的远程支付争议。 关键问题是如何"公平地"向远程员工付款。 这恰恰是一些基本问题的核心,这些问题使公平报酬成为公司的普遍斗争。   如果削减工资以从旧金山或纽约市撬出更多的技术工作,以便它们可以在其他任何地方使用,那么就这样吧。 即使减薪20%,温斯顿·塞勒姆,杰克逊维尔或小石城的人可
117 0
|
新零售 BI 项目管理
算了一笔帐,供房子需要挣多少钱——在贷款的情况下,每个月最低工资。
房价给日常生活带来的压力 以沈阳为例,假设房价4000元/平,买一个70平米的房子,共需要28万元,首付需要84000元,剩余196000元,用贷款来解决。   按照等额还款方式计算: a 贷款15年,年利率:7.
1162 0