Tuxedo-TOUPPER服务--informix数据库

来源:互联网 发布:axl rose肥了 知乎 编辑:程序博客网 时间:2024/06/05 19:43

Tuxedo 实现字符串的大写转换

1.开发的环境:AIX、Informix

2.客户端的程序Client.c

#include <stdio.h>

#include <string.h>

#include "atmi.h"

int main(int argc,char *argv[])

{

        char *buf;

        long len;

        char *recvbuf;

        if(argc != 2) {

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

                exit(1);

        }

        printf("Client is running....\n");

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

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

                exit(1);

        }

        len = strlen(argv[1]);

        if((buf = (char *) tpalloc("STRING", NULL, len+1)) == NULL) {

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

                tpterm();

                exit(1);

        }

        if((recvbuf = (char *) tpalloc("STRING", NULL, len+1)) == NULL) {

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

                tpfree(buf);

                tpterm();

                exit(1);

        }

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

        printf("After strcpy buf:%s\n",buf);

        if(tpcall("TOUPPER",(char *)buf, 0,(char **)&recvbuf, &len,(long)0)==-1){

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

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

                tpfree(buf);

                tpfree(recvbuf);

                tpterm();

                exit(3);

        }

        printf("After Tpcall buf:%s\n",buf);

        (void) fprintf(stdout, "Returned string is: %s \n",recvbuf);

        tpfree(buf);

        tpfree(recvbuf);

        tpterm();

        return(0);

}

3.服务端程序Server.c

#include <stdio.h>

#include "atmi.h"        /* Tuxedo ATMI函数库的头文件 */

TOUPPER(TPSVCINFO *rqst)

{

        int i;

        for(i=0;i<rqst->len-1;i++)

                rqst->data[i]=toupper(rqst->data[i]); /* rqst-data缓冲区内容转换成大写 */

        tpreturn(TPSUCCESS,0,rqst->data,0L,0); /* rqst-data作为响应缓冲区返回 */

}

4.编写Tuxedoubbconfig文件ubb

*RESOURCES

IPCKEY          223488

DOMAINID        svr

MASTER          svr

MAXACCESSERS    50 

MAXSERVERS      50 

MAXSERVICES     1000 

MODEL           SHM 

LDBAL           N 

*MACHINES

DEFAULT:

                APPDIR="tuxedo应用程序放置的位置"

                TUXCONFIG="使用tmloadcf -f ubb生成的tuxconfig的位置"

                TUXDIR="tuxedo的安装目录"

                ULOGPFX="一些生成的日志会放在改目录下"

                MAXWSCLIENTS=10 

xxxxx          LMID=svr   (注意:此处的xxxxx是使用命令uname -a出现的第二个字段)

*GROUPS

GROUP1

        LMID=svr       GRPNO=2 OPENINFO=NONE 


*SERVERS

DEFAULT:

                        CLOPT="-A"

WSL                     SRVGRP=GROUP1 SRVID=1  MAXGEN=3 RESTART=Y

                        CLOPT="-A -- -n //192.168.5.188:40122 -T 18000 -d /dev/tcp -m 1 -M 2 -x 5" 

server

                SRVGRP=GROUP1 SRVID=120 MIN=2  MAX=2

                RQADDR ="DATA_TU"   REPLYQ=Y

*SERVICES

TOUPPER

5.运行tuxedo程序的步骤 

  5-1.先加载tuxedo的配置文件:tmloadcf -f ubb

  5-2.编译客户端:buildclient -o client -f client.c

  5-3.编译服务端:buildserver -o server -f server.c -s TOUPPER

  5-4.启动tuxedo的服务程序:tmboot -y

  5-5.运行tuxedo的客户端程序:client hello

  5-5.关闭tuxedo的服务:tmshutdown -y (如果执行过此步骤,即生成了tuxconfig文件,在执行此步骤的时候,应该先把tuxconfig文件删除后,再执行此步骤)

注:可以通过命令tmunload > file将已经生成的tuxconfig文件反编译成tuxedo的配置文件

    在具体是实现过程中可能还需要在系统配置文件中指定WSL的IP地址

原创粉丝点击