惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
IT之家
IT之家
Last Week in AI
Last Week in AI
J
Java Code Geeks
L
LangChain Blog
Recent Announcements
Recent Announcements
Martin Fowler
Martin Fowler
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
博客园 - Franky
博客园 - 司徒正美
月光博客
月光博客
博客园 - 叶小钗
Vercel News
Vercel News
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
B
Blog RSS Feed
人人都是产品经理
人人都是产品经理
H
Help Net Security
G
Google Developers Blog
D
DataBreaches.Net

博客园 - gjung

收藏 Multithreaded COM server problem Python操作IHTMLDocument2用于自动化测试 svn对比文件源码 SQL SERVER LDF日志文件过大的问题 关于网络字节序和主机字节序 经度和纬度 TUXEDO 通讯缓冲区类型 TUXEDO server端示例程序 TUXEDO自带 方便查看 固定资产减值准备与累计折旧会计核算的关系 固定资产折旧方法 application 和 session区别以及使用application存储在线用户的session信息 sql server 2005的分页函数ROW_NUMBER 面向接口编程 abstract、virtual及override - gjung - 博客园 抽象类与接口的区别 用bde连接 连接sql server2005 - gjung 网页中的控件编辑状态 从sql2000 复制数据到sql2005
TUXEDO client端示例程序 TUXEDO自带 方便查看 - gjung
gjung · 2010-01-09 · via 博客园 - gjung

#include

#include "atmi.h"         /* TUXEDO 头文件*/

#if defined(__STDC__) || defined(__cplusplus)

main(int argc, char *argv[])

#else

main(argc, argv)

int argc;

char *argv[];

#endif

{

       char *sendbuf, *rcvbuf;

       long sendlen, rcvlen;

       int ret;

       if(argc != 2) {

              (void) fprintf(stderr, "Usage: simpcl string ");

              exit(1);

       }

       /* 作为tuxedo客户端连入tuxedo System */

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

              (void) fprintf(stderr, "Tpinit failed ");

              exit(1);

       }

       sendlen = strlen(argv[1]);

       /* 使用tpalloc申请string类型buffer作为请求和应答buffer */

       if((sendbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {

              (void) fprintf(stderr,"Error allocating send buffer ");

              tpterm();

              exit(1);

       }

       if((rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {

              (void) fprintf(stderr,"Error allocating receive buffer ");

              tpfree(sendbuf);

              tpterm();

              exit(1);

       }

       (void) strcpy(sendbuf, argv[1]);

       /* 同步调用TOUPPER服务 */

       ret = tpcall("TOUPPER", (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, (long)0);

       if(ret == -1) {

              (void) fprintf(stderr, "Can't send request to service TOUPPER ");

              (void) fprintf(stderr, "Tperrno = %d ", tperrno);

              tpfree(sendbuf);

              tpfree(rcvbuf);

              tpterm();

              exit(1);

       }

       (void) fprintf(stdout, "Returned string is: %s ", rcvbuf);

       /* 使用tpfree释放申请的请求和应答buffer空间 */

       tpfree(sendbuf);

       tpfree(rcvbuf);

       /* 使用tpterm离开tuxedo System */

       tpterm();

       return(0);

}