文章試讀
不拘一個遍程序系列:編程序不能一個腦袋鑽到底,有時要學會變通,即所謂的曲線救國。一、二、三、四
職場規劃:一些雜七雜八的職場感悟吧。不值錢的軟件人才 精力充沛與事業成功 讓系分來得更猛烈些吧 不值錢的系統分析師 經濟危機下大學生如何就業
我的詩歌:都是我的打油詩,但是很值得一讀。不要工作還衣食無憂之四難歌 香格裡拉美人圖
寶寶圖片:超可愛的小寶寶 寫博客
考試培訓:主要是關於考研、軟考和等級的相關題解。2009考研試題分析 2008年12月程序員試題分析 2009年軟考備考全攻略 2008年5月程序員試題解析
《精通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都將交易的基本信息組包成一條字符串報文,然後將這個字符串通過套接字通信等方式發送到銀行主機。銀行主機則解析此條報文信息,再執行相應的交易。
相關文章:
封面 前言 目錄 策劃 作者
動態庫 變長參數 文件鎖 外設 僵死進程
定時器 I/O重定向 消息隊列 共享內存
實踐項目:
開發網頁投票器一) 二)
開發網頁投票器 字符串報文
本文出自 “編程浪子朱雲翔” 博客,請務必保留此出處http://zhuyunxiang.blog.51cto.com/653596/139505