⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mbsputg1.c

📁 Hulft-Message是用来在Internet上传输文件数据的商用MiddleWare,特别用于数据量小
💻 C
字号:
/* ---------------------------------------------------------------------------------

     Program name     : mbsputg1.c

     Description      : Sample C program that puts group-messages to a queue

     (C) Copyright SAISON INFORMATION SYSTEMS CO.,LTD. 2004 All Rights Reserved.

--------------------------------------------------------------------------------- */
/*----------------------------------------------------------------------------------

     Function : 

        "mbsputg1" is a sample C program to put group-messages to a queue.
     This program gets messages from StdIn, and puts them to the specified queue
     with "GRP" as the UserDefineID. If "MBPUT" API failed before the group-end
     message is written, all messages after the group-start message are rollbacked.

        This program has the following parameters. If the optional parameters 
     are omitted, the parameters in System-Environment file( mbcenv.conf or MBCENV ) 
     will be used.

       required :

       optional :
          (1) -s Server     : The name of HULFT-Message Server
          (2) -p Port       : The port of HULFT-Message Server
          (3) -q Queue      : The name of the queue

--------------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#if defined(OS400)
#include "APIH/MBAPI"
#define usage   "Usage : CALL MBSPUTG1 PARM('-s' 'Server' '-p' 'Port' '-q' 'Queue')"
#else
#include "mbapi.h"
#define usage   "Usage : mbsputg1 -s Server -p Port -q Queue"
#endif

int main( int argc, char **argv )
{
/* ---------------------------------------------------------------------------------
     Declare structures needed
--------------------------------------------------------------------------------- */
        MBHD             *Hconn;                            /* connection handle */
        MBQHD            *Hque;                             /* queue handle */
        MBCON            Conn;                              /* MBCON structure */
        MBQ              Que;                               /* MBQ structure */
        MBMSG            Msg;                               /* MBMSG structure */
        MBERR            err;                               /* MBERR structure */

        int              rc;                                /* return code */
        unsigned short   port;                              /* server port */
        char             server[MBA_HOST_NAME_LEN+1];       /* server name */
        char             queue[MBA_QUEUE_NAME_LEN+1];       /* queue name */
        char             sin_buf[256];                      /* buffer for StdIn */
        char             user_define_id[] = "GRP";          /* user definition ID */

/* ---------------------------------------------------------------------------------
     Initialize
--------------------------------------------------------------------------------- */
		memset( server, 0x00, sizeof(server) );
		memset( queue, 0x00, sizeof(queue) );
		port = 0;

/* ---------------------------------------------------------------------------------
     Check the arguments
--------------------------------------------------------------------------------- */
        if( argc != 7 ){
                printf( "%s\n", usage );
                exit( -1 );
        }
        argv++;
        argc--;
        while( argc-- ){
               if( !strcmp( *argv, "-s" )){ /* server name */
                        if( argc <= 0 ){
                                printf( "%s\n", usage );
                                exit( -1 );
                        }
                        argv++;
                        argc--;
                        strncpy( server, *argv, MBA_HOST_NAME_LEN );
                }
                else if( !strcmp( *argv, "-p" )){ /* server port */
                        if( argc <= 0 ){
                                printf( "%s\n", usage );
                                exit( -1 );
                        }
                        argv++;
                        argc--;
                        port = atoi( *argv );
                }
                else if( !strcmp( *argv, "-q" )){ /* queue name */
                        if( argc <= 0 ){
                                printf( "%s\n", usage );
                                exit( -1 );
                        }
                        argv++;
                        argc--;
                        strncpy( queue, *argv, MBA_QUEUE_NAME_LEN );
                }
                else{
                        printf( "%s\n", usage );
                        exit( -1 );
                }
                argv++;
        }

/* ---------------------------------------------------------------------------------
     Connect to HULFT-Message Server
--------------------------------------------------------------------------------- */
        memset( &Conn, 0x00, sizeof( Conn ));
        strcpy( Conn.Server, server );                      /* server name */
        Conn.Port = port;                                   /* server port */
#if defined(OS400)
        Conn.Ebcdiccode = MBA_ET_IBMSMLEX;                  /* ebcdic code type */
#endif

        Hconn = MBCONN( &Conn, sizeof( Conn ), &err );
        if( !Hconn ){ /* if API returns unsuccessfully */
                printf( "MBCONN      : err=%d dtl=%d sys=%d msg=%s\n",
                        err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
                exit( -1 );
        }

/* ---------------------------------------------------------------------------------
     Open the queue
--------------------------------------------------------------------------------- */
        memset( &Que, 0x00, sizeof( Que ));
        strcpy( Que.Queue, queue );                         /* queue name */

        Hque = MBOPEN( Hconn, &Que, sizeof( Que ), &err );
        if( !Hque ){ /* if API returns unsuccessfully */
                printf( "MBOPEN         : err=%d dtl=%d sys=%d msg=%s\n",
                        err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
                MBDISCON( Hconn, &err );
                exit( -1 );
        }

/* ---------------------------------------------------------------------------------
     Put the group-messages to the queue
--------------------------------------------------------------------------------- */
        memset( &Msg, 0x00, sizeof( Msg ));
        strcpy( Msg.UserDefineID, user_define_id );         /* user definition ID */
        Msg.DataType = MBA_DATA_TYPE_TEXT;                  /* data type */

        /* write GROUP_START message */
        Msg.Groupinfo.GroupType = MBA_GT_GRP_START;         /* group type */
        Msg.MsgSize = 0;                                    /* message size */
#if defined(OS400)
        Msg.ShiftCode = MBA_SFT_CUT;                        /* shift code */
        Msg.SpaceMode = MBA_SP_FULL;                        /* space mode */
#endif

        rc = MBPUT( Hconn, Hque, &Msg, sizeof( Msg ), &err );
        if( rc ){ /* if API returns unsuccessfully */
                printf( "MBPUT          : err=%d dtl=%d sys=%d msg=%s\n",
                        err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
                MBCLOSE( Hconn, Hque, &err );
                MBDISCON( Hconn, &err );
                exit( -1 );
        }

        /* write GROUP_DATA message until NULL appears */
        Msg.Groupinfo.GroupType = MBA_GT_GRP_DATA;          /* group type */
        Msg.Buf = sin_buf;                                  /* message buffer */

        while( 1 ){
                printf ( ">> Input data\n" );
                fgets( sin_buf,sizeof(sin_buf),stdin );
                if( !strlen( sin_buf )){
                        break;
                }
                Msg.MsgSize = strlen( Msg.Buf );            /* message size */
                rc = MBPUT( Hconn, Hque, &Msg, sizeof( Msg ), &err );
                if( rc ){ /* if API returns unsuccessfully */
                        printf( "MBPUT          : err=%d dtl=%d sys=%d msg=%s\n",
                            err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
                        MBCLOSE( Hconn, Hque, &err );
                        MBDISCON( Hconn, &err );
                        exit( -1 );
                }
        }

        /* write GROUP_END message */
        Msg.Groupinfo.GroupType = MBA_GT_GRP_END;           /* group type */
        Msg.MsgSize = 0;                                    /* message size */

        rc = MBPUT( Hconn, Hque, &Msg, sizeof( Msg ), &err );
        if( rc ){ /* if API returns unsuccessfully */
                printf( "MBPUT          : err=%d dtl=%d sys=%d msg=%s\n",
                        err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
                MBCLOSE( Hconn, Hque, &err );
                MBDISCON( Hconn, &err );
                exit( -1 );
        }

/* ---------------------------------------------------------------------------------
     Close the queue
--------------------------------------------------------------------------------- */
        rc = MBCLOSE( Hconn, Hque, &err );
        if( rc ){ /* if API returns unsuccessfully */
                printf( "MBCLOSE        : err=%d dtl=%d sys=%d msg=%s\n",
                        err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
                MBDISCON( Hconn, &err );
                exit( -1 );
        }

/* ---------------------------------------------------------------------------------
     Disconnect from HULFT-Message Server
--------------------------------------------------------------------------------- */
        rc = MBDISCON( Hconn, &err );
        if( rc ){ /* if API returns unsuccessfully */
                printf( "MBDISCON   : err=%d dtl=%d sys=%d msg=%s\n",
                        err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
                exit( -1 );
        }

        printf( "Normal termination\n" );
        return( 0 );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -