tuxedo客户端测试程序
来源:互联网 发布:淘宝羊皮女背包 编辑:程序博客网 时间:2024/06/14 00:40
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>
- tuxedo客户端测试程序
- 用.net开发tuxedo客户端程序
- 不使用buildclient编译tuxedo客户端程序
- .net 调用tuxedo客户端
- tuxedo 异步客户端开发
- 客户端测试程序
- LoadRunner测试TUXEDO-004
- loadrunner tuxedo协议测试
- Tuxedo性能测试基础
- BCB 客户端 tuxedo 开发实例
- Tuxedo远程客户端无法访问故障
- tuxedo 客户端使用gcc编译
- tuxedo客户端连接失败解决方法
- 用C#开发TUXEDO客户端
- java 客户端调用 Tuxedo中间件
- 使用LoadRunner测试TUXEDO (一)
- 使用LoadRunner测试TUXEDO (二)
- 运行tuxedo自带例子simpapp,测试tuxedo安装
- $.fn.extend和$.extend的理解
- Linux下安装gcc 、g++ /gfortran编译器
- Asp.NET中AsyncPostBackTrigger的作用
- LeetCode-227.Basic Calculator II
- N!的位数两种方法求解
- tuxedo客户端测试程序
- Android学习(57) -- xUtils简介使用
- Qt学习笔记:QTransform
- MATLAB 图像的归一化
- 调整磁盘已有空间时的方法
- Centos配置国内yum源
- java常用的Math方法记录
- 剑指offer(三十八)之第一个只出现一次的字符位置
- Codeforces 616D Longest k-Good Segment