整理tuxedo客户端服务器程序范例.docx
- 文档编号:1427652
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:7
- 大小:87.21KB
整理tuxedo客户端服务器程序范例.docx
《整理tuxedo客户端服务器程序范例.docx》由会员分享,可在线阅读,更多相关《整理tuxedo客户端服务器程序范例.docx(7页珍藏版)》请在冰豆网上搜索。
整理tuxedo客户端服务器程序范例
Tpinit//传递客户认证信息
Tpalloc//申请缓冲区
Tpcall//调用服务
Tpfree//释放指向缓冲区的指针
Tpsvrinit//服务启动前的一个初始化
Tpsvrdone//关闭服务之前自动调用
Tpreturn//响应后返回信息
char*tpalloc(char*type,char*subtype,longsize)
Type用于指定缓冲区类型,可取值STRINGFMLXML等
Subtype用于指定缓冲区子类型,仅在分配VIEW缓冲区时,指定对应的C结构名,对于其它缓冲区来说,填NULL
Size是缓冲区大小,以字节为单位,如1024表示分配1KB缓冲区
Tpalloc返还分配缓冲区的指针,返还NULL标识分配失败
voidtpfree(char*ptr)
Ptr是要释放的缓冲区的指针
Tpfree没有返还值,也就是说不用判断它是否成功的释放了缓冲区
inttpcall(char*svc,char*idata,longilen,char**odata,long*olen,longflags)
Svc是要调用的服务名
Idata是请求缓冲区指针,ilen是请求缓冲区长度
Odata是指向响应缓冲区指针的指针,使用双重指针的目的是便于动态调整响应缓冲区的大小
Client:
/*(c)2003BEASystems,Inc.AllRightsReserved.*/
/*Copyright(c)1997BEASystems,Inc.
Allrightsreserved
THISISUNPUBLISHEDPROPRIETARY
SOURCECODEOFBEASystems,Inc.
Thecopyrightnoticeabovedoesnot
evidenceanyactualorintended
publicationofsuchsourcecode.
*/
/*#ident"@(#)samples/atmi/simpapp/simpcl.c$Revision:
1.5$"*/
#include
#include"atmi.h"/*TUXEDOHeaderFile*/
#ifdefined(__STDC__)||defined(__cplusplus)
main(intargc,char*argv[])
#else
main(argc,argv)
intargc;
char*argv[];
#endif
{
char*sendbuf,*rcvbuf;
longsendlen,rcvlen;
intret;
if(argc!
=2){
(void)fprintf(stderr,"Usage:
simpclstring\n");
exit
(1);
}
/*AttachtoSystem/TasaClientProcess*/
//向服务器传递客户认证信息
if(tpinit((TPINIT*)NULL)==-1){
(void)fprintf(stderr,"Tpinitfailed\n");
exit
(1);
}
sendlen=strlen(argv[1]);
/*AllocateSTRINGbuffersfortherequestandthereply*/
//分配缓冲区
if((sendbuf=(char*)tpalloc("STRING",NULL,sendlen+1))==NULL){
(void)fprintf(stderr,"Errorallocatingsendbuffer\n");
tpterm();
exit
(1);
}
if((rcvbuf=(char*)tpalloc("STRING",NULL,sendlen+1))==NULL){
(void)fprintf(stderr,"Errorallocatingreceivebuffer\n");
tpfree(sendbuf);//释放指向缓冲区的指针
tpterm();
exit
(1);
}
(void)strcpy(sendbuf,argv[1]);
/*RequesttheserviceTOUPPER,waitingforareply*/
//调用服务
ret=tpcall("TOUPPER",(char*)sendbuf,0,(char**)&rcvbuf,&rcvlen,(long)0);
if(ret==-1){
(void)fprintf(stderr,"Can'tsendrequesttoserviceTOUPPER\n");
(void)fprintf(stderr,"Tperrno=%d\n",tperrno);
tpfree(sendbuf);
tpfree(rcvbuf);
tpterm();
exit
(1);
}
(void)fprintf(stdout,"Returnedstringis:
%s\n",rcvbuf);
/*FreeBuffers&DetachfromSystem/T*/
tpfree(sendbuf);
tpfree(rcvbuf);
tpterm();
return(0);
}
服务端常用函数简介
inttpsvrinit(intargc,char**argv)
TUXEDO服务在启动过程中要经历一个初始化阶段,这个时候服务回调tpsvrinit()方法进行全局初始化,它类似于C++的构造函数,给程序员提供了一个打开全局资源(数据库,消息队列,文件系统,socket)和初始化全局变量的好机会
inttpsvrdone(void)
对应tpsvrinit,在关闭服务时被自动调用,类似C++的析构函数,释放初始化打开的资源
voidtpreturn(intrval,longrcode,char*data,longlen,longflags)
Data是要返回的类型缓冲区指针,len是缓冲区的长度
Flags是标志位,目前尚未启用,必须置为0
Rcode是用户自定义的整数,可以随tpreturn()一起返回,客户机通过全局变量tpurcode来得到这个值
Rval是服务处理状态位,不用关注
intuserlog(char*format[arg]…)
此函数和printf的用法一致,服务端可以用此函数记录日志,存放在ULOG.mmddyy
文件中,不建议这样使用,TUXEDO每天会自动生成系统日志放在ULOG.mmddyy
Server:
/*(c)2003BEASystems,Inc.AllRightsReserved.*/
/*Copyright(c)1997BEASystems,Inc.
Allrightsreserved
THISISUNPUBLISHEDPROPRIETARY
SOURCECODEOFBEASystems,Inc.
Thecopyrightnoticeabovedoesnot
evidenceanyactualorintended
publicationofsuchsourcecode.
*/
/*#ident"@(#)samples/atmi/simpapp/simpserv.c$Revision:
1.5$"*/
#include
#include
#include
#include
/*tpsvrinitisexecutedwhenaserverisbooted,beforeitbegins
processingrequests.Itisnotnecessarytohavethisfunction.
Alsoavailableistpsvrdone(notusedinthisexample),whichis
calledatservershutdowntime.
*/
#ifdefined(__STDC__)||defined(__cplusplus)
tpsvrinit(intargc,char*argv[])
#else
tpsvrinit(argc,argv)
intargc;
char**argv;
#endif
{
/*Somecompilerswarnifargcandargvaren'tused.*/
argc=argc;
argv=argv;
/*userlogwritestothecentralTUXEDOmessagelog*/
userlog("Welcometothesimpleserver");
return(0);
}
/*Thisfunctionperformstheactualservicerequestedbytheclient.
Itsargumentisastructurecontainingamongotherthingsapointer
在可行性研究时应进行安全预评价的建设项目有:
tothedatabuffer,andthelengthofthedatabuffer.
*/
3.不同等级的环境影响评价要求
#ifdef__cplusplus
extern"C"
(3)机会成本法#endif
5.建设项目环境影响评价文件的重新报批和重新审核void
#ifdefined(__STDC__)||defined(__cplusplus)
TOUPPER(TPSVCINFO*rqst)
(2)疾病成本法与人力资本法#else
(3)生产、储存烟花爆竹的建设项目;TOUPPER(rqst)
(3)生产、储存烟花爆竹的建设项目;TPSVCINFO*rqst;
C.环境影响报告书#endif
{
1)按类型分。
环境标准按类型分为环境质量标准、污染物排放标准(或控制标准)、环境基础标准、环境检测方法标准、环境标准样品标准。
inti;
for(i=0;i
rqst->data[i]=toupper(rqst->data[i]);
/*Returnthetransformedbuffertotherequestor.*/
表四:
项目排污情况及环境措施简述。
tpreturn(TPSUCCESS,0,rqst->data,0L,0);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 tuxedo 客户端 服务器 程序 范例
![提示](https://static.bdocx.com/images/bang_tan.gif)