分类:
2009-08-22 13:20:53
【函数原型】:
int Fget( FBFR *fbfr, FLDID fieldid, FLDOCC oc, char *loc, FLDLEN *maxlen );
【功能说明】:
取得数据域缓冲区中的域值。
【参数说明】:
fbfr: 数据域缓冲区指针
fieldid: 域标识符
oc: 域的频次
loc: 存放取得的域值的缓冲区指针
maxlen: 指向原缓冲区最大长度的指针
【返回值】:
<0: 失败返回
else: 成功返回
$ cat aud.flds /* FML域定义文件 */
*base 100
#name number type flags comments
BRANCH_ID 1 long - -
BALANCE 2 float - -
STATLIN 3 string - -
NAME 4 string - -
$ mkfldhdr aud.flds
生成aud.flds.h
$ cat aud.flds.h
/* fname fldid */
#define BRANCH_ID ((FLFID 8302)
/* number: 101 type long */
#define BALANCE ((FLFID 24692)
/* number: 102 type float */
#define STATLIN ((FLFID 41069)
/* number: 103 type string */
#define NAME ((FLFID)61070)
/* number 104 type string */
客户端:
if( ( sendbuf = ( FBFR* )tpalloc( "FML", NULL, 1024 ) ) == NULL ) {
fprintf( stderr, "Error allocating send buffer\n" );
tpterm( );
exit( 1 );
}
Fadd( sendbuf, NAME, argv[ 1 ], NULL );
tpcall( "SVCNAME", sendbuf, … );
服务器端:
int SVCNAME( rqst )
TPSVCINFO *rqst;
{
FLDLEN len;
char strName[ 10 ];
…
len = sizeof( strName );
if ( Fget( rqst, NAME, 0, strName, &len ) < 0 ) {
…
}
…
}
所谓Tuxedo网络环境是指客户端与服务器端通过网络方式进行连接。
在编译客户端程序时增加“-w”选项,表示客户端程序以网络方式调用应用服务。如:
buildclient –w –o simpcl –f simpcl.c
通过环境变量WSNADDR指定服务主机和通讯端口,如:
WSNADDR=//160.1.19.227:9702;export WSNADDR
注意:记住通讯端口号(例中的9702),服务器端也必须设置相同的端口号。
修改ubbconfig中的以下各节:
【MACHINES】
*MACHINES DEFAULT: APPDIR="/users/test/simpdir" TUXCONFIG="/users/test/simpdir/tuxconfig" TUXDIR="/usr/bea/tuxedo" tuxedo LMID=simpapp MAXWSCLIENTS=10
在主机信息中增加最大客户端连接数MAXWSCLIENTS,如:
【GROUPS】
*GROUPS GROUP1 LMID=simpapp GRPNO=1 OPENINFO=NONE GROUP2 LMID=simpapp GRPNO=2
增加一个服务组,用以存放网络守候服务WSL,如:
【SERVERS】
*SERVERS DEFAULT: CLOPT="-A" WSL SRVGRP=GROUP2 SRVID=1 CLOPT="-A -- -n //160.1.19.227:9702 -d /dev/tcp -m 5 -x 5 -M 20" MIN=1 simpserv SRVGRP=GROUP1 SRVID=1
增加网络守候服务WSL,其中指定服务主机IP和通讯端口,通讯端口必须与客户端通讯端口一致,如:
*RESOURCES
IPCKEY 123456
DOMAINID simpapp
MASTER simpapp
MAXACCESSERS 50
MAXSERVERS 20
MAXSERVICES 50
MODEL SHM
LDBAL N
*MACHINES
DEFAULT:
APPDIR="/users/test/simpdir"
TUXCONFIG="/users/test/simpdir/tuxconfig"
TUXDIR="/usr/bea/tuxedo"
tuxedo LMID=simpapp
MAXWSCLIENTS=10
*GROUPS
GROUP1
LMID=simpapp GRPNO=1 OPENINFO=NONE
GROUP2
LMID=simpapp GRPNO=2
*SERVERS
DEFAULT:
CLOPT="-A"
WSL SRVGRP=GROUP2 SRVID=1
CLOPT="-A -- -n //160.1.19.227:9702 -d /dev/tcp -m 5 -x 5 -M 20"
MIN=1
simpserv SRVGRP=GROUP1 SRVID=1
*SERVICES
TOUPPER