tuxedo客户端测试程序
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客户端测试程序相关推荐
- Boost:基于Boost的posix聊天的客户端测试程序
Boost:基于Boost的posix聊天的客户端测试程序 实现功能 C++实现代码 实现功能 基于Boost的posix聊天的客户端测试程序 C++实现代码 #include <cstdlib ...
- c语言开发tuxedo客户端,Tuxedo-应用开发.doc
Tuxedo-应用开发 Tuxedo应用开发指南 第一章 开发BEA Tuxedo应用程序... §1.1 开发前的思考... §1.2 创建BEA Tuxedo的客户程序... 客户程序的任务... ...
- tuxedo连接mysql,tuxedo详细安装的步骤.doc
Tuxedo使用Non-XA模式连接Oracle数据库 的网络拓扑图: 软件安装环境:3台主机都安装Cent OS 5.3操作系统,第1台主机作为Tuxedo的客户端,只安装Tuxedo客户端(IP: ...
- linux下的tuxedo开发实例
安装配置 上传安装文件tux81.tar,然后解压 tar -xvf tux81.tar 在当前目录下有一个tuxedo8.1目录,接着需要配置环境变量. vi .bash_profile 添加如下内 ...
- 监控系统之weblogic,apache,tuxedo的监控项的整理
I've been busy working on this the whole day,monitoring the middleware apache监控: Apache监控指标 监控项 监控指标 ...
- 【译】使用Java编写Oracle Tuxedo应用
Oracle Tuxedo Java编程介绍 简介 Oracle Tuxedo服务可以使用纯java来编写.使用java实现的服务的功能和其他Tuxedo服务实现是一样的.你可以使用客户端或者Tuxe ...
- Windows下Tuxedo的安装与配置-无数据库
Windows下Tuxedo的安装与配置-无数据库 草木瓜 2005-5-18 一.安装前的文件准备 下载Tuxedo For Windows版本和License文件,本机采用的是Tuxedo9 wi ...
- Qt实现mqtt客户端和mqtt服务器搭建
下载qtmqtt源码 下载地址:https://github.com/qt/qtmqtt,选择跟自己使用Qt版本一致的分支 使用qmake编译qtmqtt源码 编译环境:Ubuntu1804+Qt5. ...
- tuxedo错误码6_tuxedo错误解析和常用配置说明
CMDTUX_CAT:1685: ERROR: Application initialization failure 这个服务是一个数据库的服务,连接用的用户名.密码.数据库名字都正确,但还是启动不了 ...
最新文章
- MySQL协议.NET Core实现(一)
- matlab pareto 升级版
- 计算机网络 实验 使用端口完成地址转换,Wireshark抓包工具计算机网络实验解析...
- 让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析
- android实现页面的跳转
- 潭州课堂25班:Ph201805201 django 项目 第二十四课 文章主页 多级评论数据库设计 ,后台代码完成 (课堂笔记)...
- Oracle 条件语句/循环语句
- Java核心技术 卷(一) 学习记录
- 制作1G的U盘启动盘
- 嵌入式系统开发项目管理
- 在windows下制作grub2引导的多启动U盘(可启动wepe,安装centos7,debian10等)
- Google的GDrive美如水中之月
- 可在手机浏览器下载文件的方法
- windows nvm安装,以及更换阿里源和用nvm安装node.js
- 用python实现相声、评书自动下载(四)
- 【企业】零和博弈思维模式构建,互利共赢
- ImGui实现Button高亮
- Perma.cc停止学术链接腐烂
- 日复一日,年复一年,祝我們都好在新的一年.
- N3-PEG-MAL,Azdio-PEG-Maleimide,一种点击化学PEG试剂
热门文章
- 乳腺增生的早期症状?乳腺增生做什么检查最好
- 创建角色、ansible-galaxy(在线角色)的使用
- 代码随想录算法训练营第八天|344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串
- 激光祛斑真的有用吗,激光祛斑会不会反弹
- 记录一次cpu 过高分析过程
- jquery制作拉开帷幕特效
- Unity平滑函数Lerp简单介绍
- forward 和 redirect 的区别?
- c语言 case语句用法,switch case语句的用法
- 超级强大,只需三步就能用 Python 做出酷炫的可视化大屏