资源描述:
《使用C++ Builder封装Tuxedo客户端调用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、使用C++Builder封装Tuxedo客户端调用本文主要介绍如何使用C++Builder把Tuxedo客户端的调用封装成一个独立的类CTuxCall,最大程度的方便用户调用tuxedo,并给出相应的例子,以供参考.由于是第一次发表这样的文章,其中不足之处,还望大家予以批评指正。类CTuxCall的特点封装后的类CTuxCall有如下一些特点,能够最大程度的满足用户的需求,方便用户的调用.(1)可以自定义连接方式,长连接,短连接和混合连接(由用户自定义连接次数,当实际的连接次数超过自定义的连接次数,则自动断开连接,然后重连);(2)可以自动切换连接地址,目前提供了5个备用地址,只
2、要其中有一个地址上的服务是正常的,则Tuxedo的连接就是正常的;(3)能够方便的设置客户端的信息,如操作员名称,操作员IP地址,或者操作员当前操作状态;(4)调用方式简单,灵活,可扩充性好.类CTuxCall函数说明(1)设置客户端信息,在这里你可以设置操作员或者终端,甚至是一些操作状态的信息:voidSetClientInfo(char*username,char*ctlname);使用该函数后,在服务器的管理平台,使用pclt命令,就会显示客户端的相关信息,如:LMIDUserNameClientNameTimeStatusBgn/Cmmt/Abrt------------
3、-------------------------------------------------------------szx1apptuxedoWSH21:54:08IDLE0/0/0szx1appoper01192.168.1.1140:18:15IDLE/W0/0/0(2)设置连接方式:boolSetConnectType(intcontype);(3)设置监听地址:boolSetWSNAddr(char*addrlist);参数格式如下:"//ip1:port1;//ip2:port2;....;//ip5:port5",最多支持5个IP地址.(4)服务调用:Invok
4、e();在客户端编写代码,只要调用这个函数即可.关于这个函数有几个不同的函数原形,具体如下:boolInvoke(char*OpCode,...);指定操作码,调用确省服务,参数个数不定,至于如何把传入的参数一定的格式写入到发送缓冲去,需要调用自定义的函数进行打包.boolInvoke(char*SrvName,char*OpCode,...);大体内容同上,只是调用的是指定的服务,而不是确省的服务.boolInvoke(char*SrvName,longInLen,long&OutLen);在使用此函数之前,必须保证先调用SetSendBuf()函数填充发送缓冲区.boolIn
5、voke(char*SrvName,char*InStr,longInLen,char*&OutStr,long&OutLen,intflag=0);调用指定服务,输入参数和返回结果都由用户自定.(5)填充发送缓冲区:intSetSendBuf(char*szFormat,...);该函数用法同c语言的printf()函数,只是发送缓冲区的长度有限制,最好不要超过1024*10个字节.源码分析类CTuxCall的源码TuxCall头文件//-----------------------------------------------------------------------
6、----#ifndefTuxCallH#defineTuxCallH//---------------------------------------------------------------------------#ifdefined(__BORLANDC__)&&!defined(SOCKET_CONNECT)//#pragmacomment(lib,"libtux.lib")//#pragmacomment(lib,"libbuft.lib")//#pragmacomment(lib,"libfml.lib")//#pragmacomment(lib,"libfml3
7、2.lib")//#pragmacomment(lib,"libengine.lib")#endif#defineTRANSMITER"TRANSMIT"classCTuxCall{private:char*m_RecBuff;char*m_SendBuff;charErrMsg[1024];voidClearBuffer();intm_Errno;boolm_bBeginTrans;intm_ConnectionType;//连接方式:0:长连接,1:短连接;m(m>10):m