您的当前位置:首页正文

BST数据通信程序设计说明书0416

2024-07-16 来源:意榕旅游网

民生银行BT数据通信服务器程序设计说明书

一.

设计概要

器程序主要完成的功能
主要作数据通信数据转发;UNIX平台上开启一个TC/IP协议的服器端程序,通OKET接口接收到BTWBSERER转发BST交易求包有子程完成与主机的通信;子程将求包按照民生行提供的MAPFLE(交易数据格式)行数据重,形成主机求包,并与行通信服(LIK)建立socke接,求包,并接收主机响包。最后将响包按照MAPFILE出格式解包并EBSEVE.

另外要完成申请终端工作密,交易行加密机行密的工作。具体明在后面章节说明。

二.

录说

$HOME/inclde/所有的文件,包括行接口的.

$OME/ib

HME/bin/

所有的文件。

运行目.运行文件名servr’,运行。/r 后台运行。

HME/ec/mpil行数据接口定文件。

HOMEecsysfg所有的配置文件。



详细程序设计及流程

3。1主程序模

启动应用

初始化应用 1.读配置表BstServ.cfg 2.初始化MAP结构

申请初始工作密钥 3.初始化包头配置结构

主进程

有连接申请?

子进程

接收CLIENT数据

RQK 交易?

Y

从加密机申请密钥

N

调用DoWithHost与主机

通信

返回响应数据包

关闭SOCKET

释放MAP结构

退出子进程

:
(1)配置表BsServcfg中定了与WEBSEVRSOCKT接的PR,ELNK接的IP地址和POT端口。

(2)初始化MA构是将行的主机接口数据格式定文件(APFILE文件)全部用动态链实现,以便提高访问速度。有关明在后面章

3)初始化包配置,是将MAPFIE的配置表入到全局Sys_Head中,也了提高访问速度。具体配置后面章.

4)将子程中的MAP放,防止占用内存.



3.2主机通信模DWithHos()函数)

功能:打主机包>>接收-〉解包返回响

开始

初始化POOL 结构

PackHostData()

查找链表中相应交易结点

ELINK建立连接
Sys_Head组交易包头

调用PackHostData()组包

PAPSWD

Y

与加密机交换

PINBLOCK

N

按输入MAP组交易数据发送主机数据包

POOL转换为主机报文

释放POOL结构,返回
接收主机数据包

初始化POOL 结构

PackResponseData()

调用PackResponseData解包

将主机响应包转为POOL

关闭SOCKET(与ELINK

打印POOL 到屏幕

Y

根据POOL 组返回拒

返回数据包长度

主机拒绝包?

绝包

N

根据输出MAP组返回数据包

FORM 单元?

Y

调用UnpackForm()

解释FORM 单元

N

释放POOL结构

返回下传数据包长度

3。3MPFILE动态链

MAFILE表的构定在ltale.h中,如下:
#dfineMAPtutT_Map
defneTINEstrutT_Index

stutT_ap{
chaTnme16];
int Tlen
charTtpe[1;]
structT_Mapnex;
}_Map

stuctT_Index
charTcode[5;]
hainqname[16];
charreqname[16;]
charendaddr[10];
trctT_Map inq
sruct_Mp*re;
stutT_Inde*next;
T_Idex
每个交易对应一个T_Index,点的Tcd交易;每个交易的点中存放的信息有:交易入MAP文件名、MAP文件名、交易目的地址、MAP表的出MAP表的

入、MP表中分别储存了相MAPILE的前三个字段,以便打包、解包使用.

目前数据度(intTlen)与数据型(carTtype1])暂时没有用到,保留以后使用。即,交易入、的交易数据(除交易包外)的度是变长的。

34加密、密方式的

在服器程序启动时,先向主机申工作密,即9367交易;返回的PinKy保存在SRVER端。

BST动应先向SERVER送RQK1交易包申请终端使用密SERVER接收到RQK1交易时调T_g_woring_ey()函数向加密机申,并将其返回BST。

BST做交易,要将密(orkigey)和PinBock上送至SERVRSERVERT_tr_in_nsi_asi()函数与加密机交PinBock,然后放在PAPWD字段上送。

更改密交易的旧密字段也同要加密,密同上。

注意:如果PSPWD=1或者2SRVERPPWD和PAOLW行PINBLCK的交;如果PSPWKD0或者没有DDU字段认为不做PINBLOKSEVER会将BST上送来的密字段原送主机。


三.

WEBSERVER 通信数据包格式

4.1BST上送包格式

设备

交易

保留字段

交易包部分

交易数据部分

5byte

byte

6bye

25 个字符零

用|分隔,数据域

|分隔,数据域变长

50个字节为WBEVR

其中,交易包部分的定./sysfg/下,由三个配置文件定
ysem_ead.cfg
cmtran_hed.cfg
ran_ead.cg具体内容看配置文件。

部分中的数据域的和据域的完全符合上述三个文件的定,不能少送所有的域.BST设备端不知道的数据(如交易目的地址),样长度的空格代替,SER

ER自己理(方便交易包理,将三个文件合成Head_Vaue.cfg,具体

后面章)。

交易数据部分的定义为MPFILE,如150交易的入MAPFILE(O15100). 部分数据域的的序必符合MPFIE的定度可以是变长,行分隔即可。无数据域不添,但要用分隔的空域。

注意:加密后的PINBLCK(和新密均是)十六位,存放在相的数据域中。

交易数据包:

设备

交易

5byte

RK1 或rqk

字符0 16+25bye

4.2返回数据包格式
SRVER主机返回的数据包先转为POOL构,再从该结构中按出MAPFLE(O1511)的定将数据用分隔成字符串下

.21交易错误

设备

交易

错误码

具体错误码

保留字段

5yt

4byte

300

301

3 bytea

下送包的头为40BYTE

错误码为000,与主机通信中有错误;文档最后有待错误码.

注意:如果上送的数据包小于50BYTE,上送不行解,返回的设备号和交易均返回零,返回包如下:
B3105aaaaaaaaaaaaaaaaaa

422RQK失败错误

设备

交易

错误码

保留字段

5BYE

4BYE

200

27 ye‘0'

4。2.3RQK正确包

设备

交易

错误码

保留字段

Wrkine

5BTE

4BYE

0000

27byte ‘'

||

Workig—ke16位。

4。24主机拒

设备

交易

错误码

保留字段

ERRNO|

ERRI

E
RTEXT

5BYTE

4BYTE

1000

2byte 0

主机错误码

主机错误I

主机错误描述

后三个字段由./syscf/ERR000文件定,主机返回的错误信息。SERVER|’分隔变长数据。

42.5主机正确数据包

设备

交易

错误码

保留字段

MAP域

出MAP

byt

byte

000

27bye 0

|分隔,数据域变长

当前记录|记录字段数|记录……|

FORM域的格式:

OM 文件名

当前笔数

记录字段数

所有记录数据

F1583|

01|

014|

记录1记录2|(字段也有竖线)

明:
PACOUT是交易的笔数,FORM域内的当前笔数;
FORM域的位数不下,的是每条记录的字段数.

如果FOM域的后面有DDU数据,那么将DDU数据解在FRM前面。FORM数据是放在DU数据之后.

1409登交易的FORM数据中有打印控制字符,起始打印行数和打印控制字符(列数+字体...,一个字的十六。所以(1+1)*字段数。在程序中,列数和字体号均不下,只有起始打印行数下,所以1409交易的下

FRM

当前笔数

记录字段数

打印起始行

所有记录数据







F583

012|

014|

0010|

记录1记录2|(字段也有竖线

4.26FORM无明数据包

设备

交易

错误码

保留字段

DDU数据

5BYT

BYTE

00

27 byt0’

用|分隔,数据域变长


四.

相关配置文件

了方便,配置文件也放在/sysfg/”.

51stServ.cg
文件中配置了SEVER的初始化参数:
SRPORT=201WEBSEVERSOCKET的端口 HOSIP= 1970。3.21定LINK(主机接口)的IP地址
HOSPORT= 999 了ELIK的端口

[GET_KEY]
PATELR=069001不同分行的机构号的置;申主密钥时使用。

PAPSWD88888888机构密

[FORM_NO]
F1583= 1 了相FORMMAP文件中的字段数5.2hed_vaue.cfg
文件定了交易包数据部分的字段及其赋值类型,

ssSADDR40#源地址,
sysDADDC#目的地址,c表示由交易码查询确定
ysRSRVD10#保留位
ysEFAG1#信息志,默认为
sysSENUM20文序号,不使用,认值为0
sysMACFLAGﻩﻩ10 #校验标,是否需MC或其他校sysMACVLUE0#校验值
PDWSNO 5#交易端号.r表示由BST的数据中

PDCTNO DSBN
PUSI
PDTRCD
PDTSD
PTRMD
PDTRS
PDOF1
PDOFF2

N

#城市代n 表示添空格

R行机构代
R #交易柜
4R#交易代,TranCode
20#交易子
10#交易模式

0

#交易序号

2

0#系偏移1

PDTL 2

2

0

#偏移2



PDAUS

8

0#

PDAUPS 80#

明:第一列交易包部分有的字段,不能少;
第二列为该字段的,上送的字段度必一致;
第三列字段赋值类型:
0 :由SERVER为该字段赋值为x00的串;
N :由SERVER端为该字段赋值为空格字符串;
R SEVER端从上送求包中相的域中取;
C SERVER端根据tindexcg中每个交易的目的地址字段的定来填写目的地址。

表可以使解上送求包的数据更加灵活。

#’后面是注

5。3tndxcf
文件是建交易MAP构的配置文件,它定了四个字段:
交易,交易MAFILE文件名,交易MAPFLE文件名,交易上送主机的目的地址。例如:

#交易码输MAMAP目的地址
158 O1583O1583000000
101100O401100000000
1482O48211482 0000000
1483 O4831O148300000
1485 O1481 14852000000
目的地址字符串表示的四字的十六.程序会将其转为十六制。

5.4关于FTP相关文件的配置
目前FTP文件是由ELIK方向BTSERVE,使用的用户为:
USER:st:cmcsot
Path/sr/sot
bssrv用下有后台程序定将下的文件入数据的shell程序。内容如下:文件:btsvcrn
#hisjobis load info dtabase.

10***/usr/bssrv/data/info.sh
文件:info.sh
#!/bin/sh
INFORMXDIR/us/informix
INFORMIXSERVER=dbsrver
expotINFORMIXDIR INFOMXSERVR
PAH$INFOMIDIRbin
exorPAT

/usrbssrv/ata/nfosl

文件:infosq
isql<<--

databasebst_database
deletefromgrka;
loadrom"usr/st"insert itogrka;
eeefrmgdrta;
loadrm"usr/o"inserintogdta;
dltefomgdsb;
loadrm"/ur/sot"iserintogdb;
deleefomgdxra
lodfrom "/sr/soinsetntodra;
!

五. TRACE文件

1Trae文件在./Tace'下。Trace文件按设备号区分,每个设备对应自己的Trace文件。如,设备B001Trace文件名B0001。LOG。字母表示不同设备类型;Trace文件中记录了通信数据,包括:
WEBSERVER上送的求包,用BST–> SERVE表示。

ERVER主机的数据包,SERVER–HS表示。

主机返回的数据包,HOSTSRER表示。

ERVR返回WEBSERVER的数据包,SERVR–〉BST'表示。

Trace数据有两种形式:ASII形式和十六制。

BstSrv。LG程序初始化的LOG文件,记录入的参数.B999。LOG 程序向主机申LG文件。
og 后台运行程序屏幕出的重定向文件。

2.Trace文件的份放在/usr/websrvlog/下,以当天日期,每次份会自上月同日期的目。即份只有一个月以内的。Wbsv下有后台程每天自动进TRCE份与除工作。

Wbsrvcron
002* **/usr/ebsr/binbacklogshaa。log

backlg.s:
backlog copyrightyJingHuaing
#hishellcanacupTaceireoryorBSTCOMM-SERER,whichorderydate of mnth.

2001/0916

querysstmdat
dat+d>alog
readatealog

defievarabl
LogPth=/lo/
TrceName=Trace
Backame=$HOME{Lgath}${TaceName}${Date}

deeteoldbackup HME

s$OE${LogPath}>a.log
fgrep${TraceName}${Date}a.log b.log2〉&1
the
m-r{BackName}
fi

cp-r ${TracNam}${BackNam}
rma.log
rmb.log

#ratenewTacedietrynlg $TracNae}
rm*.LOG
cpdv/nll./log

六.

可能充的错误码

001ELINK失
300: 向主机送失
3003:/
100:没有交易的定
3101: head_valuecg配置有错误
102:上送数据少于MAP
3103:交PIBLOCK失
104:上送包数据转换错误(PacEucpSendStr)
3105求包错误
3106: PAPWKD密方式不正确,该值是0,12其中之一.

311: 主机响转换错误(UnpackEcpRevStr
3111:解FOM数据出
12:接收FORM数据错误

311:FORM数据超出8K

七.

新加银证通交易接口

通交易使用与天不同的通信接口及通信数据文。所以需要定新的与WEBSERVER的交易接口,但尽量保持原有格。

7.1BST上送银证通包格式

设备

交易

交易子

保留字段

交易数据部分

5yte

4byt

16byt

8byte

17个字符零

|分隔,数据域变长

B000

YZT

****


000…000


7.2下交易错误

设备

交易

错误码

具体错误码

交易子

保留字段

5yte

4byte

300

3200

8bte

15bytea







下送包的头为0YE

银证通交易的错误码从320399

7。3下主机拒

设备

交易

错误码

交易子

保留字段

|ERO

ERRD|

RRTXT|

5YTE

BYTE

1000

8byte

19bye

主机错误码

主机错误D

主机错误描述









后三个字段由。/syscfg/ERR00文件定,主机返回的错误信息。SEVR分隔变长数据。

.4主机正确数据包

设备

交易

错误码

交易子

保留字段

MAP域

出MAP

5byt

4yte

0000

byte

9bte0

用|分隔,数据域变长

当前记录|记录字段数|记录……|









FORM域的格式

FORM 文件名

当前笔数

记录字段数

所有记录数据

F1583

001|

004|

记录1记录2|(字段也有竖线

:
PACUT交易的笔数,FORM域内的当前笔数;FORM域的位数不下,此的是每条记录的字段数。

如果FORM域的后面有DDU数据,那么将DDU数据解在FORM前面。FORM数据是放在DDU数据之后.

1409登交易的FORM数据中有打印控制字符,起始打印行数和打印控制字符(列数+字体..),一个字的十六。所以1+1)*字段数。在程序中,列数和字体号均不下,只有起始打印行数下,所以1409交易的下

FORM名

当前笔数

记录字段数

打印起始行

所有记录数据

F1583

012

004|

0010

记录1记录(字段也有竖线)

7.5FORM无明数据包

设备

交易

错误码

保留字段

DU数据

5BYTE

4YT

4000

27 byte ‘0’

用|分隔,数据域变长

新加错误码:

301anotconnecmidd
322loinfaild
204sedto midd rro
3210socketindeerro,resuttype=/m
3211上送数据少于MAP

八. 新加开放基金交易接口2002-4-16

开放基金交易接口仍然走ELINK接口,与原来的接口基本一致,只要置不同的目的地址,增加相的交易配置文件即可.

须变更的地方是:开放基金接口中没有了密方式的字段(pwkd),而原来的接口要根据该标志来确定是否要与加密机行PINBLOCK。所以了与原来的接口理相一致,必在开放基金的接口中增加密验标志位.具体方式如下:
EBSERVER上送的开放基金的交易文中,包部分中的保留字段的最后一位作验标志;1’表示要行校PNBOK;其他的均默认为不做PINLOCK,送0’

开放基金之外的交易仍按原来的理,即位仍作保留字段送空格即可。

显示全文