tuxedo客户端测试程序

  • Post author:
  • Post category:其他


client.c

=====================================================

#include <stdio.h>

#include “atmi.h” /*包含TUXEDO系统的头文件”atmi.h”, 以便引用TUXEDO的函数和变量定义。*/

#define ALLOClEN 20000 /*定义输入和返回的长度*/

#define MAXLEN 20000 /*定义输入和返回的长度*/

//读取文件filename的内容到dest数组,最多可以读maxlen个字节

//成功返回文件的字节数,失败返回-1

int read_file(const char *filename, char *dest, int maxlen)

{

FILE *file;

int pos, temp, i;

//打开文件

file = fopen(filename, “r”);

if( NULL == file )

{

fprintf(stderr, “open %s error\n”, filename);

return -1;

}

pos = 0;

//循环读取文件中的内容

for(i=0; i<MAXLEN-1; i++)

{

temp = fgetc(file);

if( EOF == temp )

break;

dest[pos++] = temp;

}

//在数组末尾加0

dest[pos] = 0;

return pos;

}

int main(int argc, char** argv)

{

char *inbuf=NULL;

char *outbuf=NULL;

long len=0;

long outlen=0;

char inbuftmp[MAXLEN]=””;

char envinfo[100] = “”;

sprintf(envinfo, “WSNADDR=//%s”,argv[1]);

tuxputenv(envinfo);

if( argc != 4 )

{

fprintf(stderr,  “用法: ./client IP:port 服务名 请求报文\n”);

fprintf(stderr,  “用法示例: ./client 192.168.224.128:2225 sv_query ./test.txt \n”);

return -1;

}

len = read_file(argv[3], inbuftmp, MAXLEN);

/*客户端调用tpinit()连接应用*/

if  (tpinit((TPINIT * )NULL) == -1)

{

exit(1);

}

/*用tpalloc()分配一个STRING类型数据缓冲*/

if (NULL==(outbuf=tpalloc(“STRING”, NULL, ALLOClEN)))

{

tpterm();

exit(-1);

}

/*用tpalloc()分配一个STRING类型数据缓冲*/

if (NULL==(inbuf=tpalloc(“STRING”, NULL, ALLOClEN)))

{

tpterm();

exit(2);

}

/*将”hello world”拷贝进缓冲*/

strcpy(inbuf,  inbuftmp);

printf(“\t请求报文:[%s]\n”,inbuf);

/*用tpcall()包含数据缓冲,向交易”TOUPPER”发一个同步请求*/

if ( tpcall(argv[2], inbuf, 0, &outbuf, &outlen, 0)== -1)

{

fprintf(stderr, “service requst fail.\n”);

tpfree(inbuf);

tpfree(outbuf);

tpterm();

exit(-1);

}

/*打印出改变的数据缓冲*/

printf(“\t 应答报文:[%s]\n”, outbuf);

tpfree(inbuf);

tpfree(outbuf);

/*调用tpterm()切断与应用的连接*/

tpterm();

exit(0);

}

makefile

======================

all:

buildclient -w -f client.c -o client -v

test.txt

=============

<REQ_MSG><HEAD><FUNCID>01</FUNCID><OPUSER></OPUSER><OPROLE>1</OPROLE><OPCHANNEL></OPCHANNEL><OPSITE></OPSITE><SESSION></SESSION><RUNTIME></RUNTIME><RESERVE></RESERVE></HEAD><BODY><APPSHEETSERIALNO></APPSHEETSERIALNO><CERTIFICATETYPE>3</CERTIFICATETYPE><CERTIFICATENO>jg1234我#11111111111111111</CERTIFICATENO><INVESTORNAME>sheny机111</INVESTORNAME><TRANSACTIONDATE>20140909</TRANSACTIONDATE><TRANSACTIONTIME>14</TRANSACTIONTIME><INDIVIDUALORINSTITUTION>0</INDIVIDUALORINSTITUTION><DISTRIBUTORCODE>225</DISTRIBUTORCODE><BUSINESSCODE>001</BUSINESSCODE><CHANNEL>1</CHANNEL><TRANSACTIONACCOUNTID>002</TRANSACTIONACCOUNTID><BRANCHCODE>001</BRANCHCODE><HOLDERCODE>002</HOLDERCODE><MANAGERCODE></MANAGERCODE><CUSTODIANCODE>004</CUSTODIANCODE><CAPITALTYPE>2</CAPITALTYPE><CAPITALFLAG></CAPITALFLAG><INSTREPRTYPE>1</INSTREPRTYPE><INSTREPRFLAG>1</INSTREPRFLAG></BODY></REQ_MSG>



版权声明:本文为zistxym原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。