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

📄 mbsputp1.c

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

     Program name     : mbsputp1.c

     Description      : Sample C program that puts a publish message
                        to Publish queue

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

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

     Function : 

        "mbsputp1" is a sample C program to put a publish message to Publish
     queue. This program gets a message from StdIn, and puts this to Publish
     queue with "PUBLISH" as the UserDefineID.

        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) -t Topic      : The name of the topic

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

#if defined(OS400)
#include "APIH/MBAPI"
#define usage   "Usage : CALL MBSPUTP1 PARM('-s' 'Server' '-p' 'Port' '-t' 'Topic')"
#else
#include "mbapi.h"
#define usage   "Usage : mbsputp1 [-s Server] [-p Port] [-t Topic]"
#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             topic[MBA_TOPIC_LEN+1];            /* topic */
        char             sin_buf[256];                      /* buffer for StdIn */
        char             user_define_id[] = "PUBLISH";      /* user definition ID */

/* ---------------------------------------------------------------------------------
     Initialize
--------------------------------------------------------------------------------- */
		memset( server, 0x00, sizeof(server) );
		memset( topic, 0x00, sizeof(topic) );
		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, "-t" )){ /* topic */
                        if( argc <= 0 ){
                                printf( "%s\n", usage );
                                exit( -1 );
                        }
                        argv++;
                        argc--;
                        strncpy( topic, *argv, MBA_TOPIC_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 ));
        Que.MsgMode = MBA_MM_PUBLISH;                       /* message mode */

        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 message to the queue
--------------------------------------------------------------------------------- */
        printf ( ">> Input data\n" );
        fgets( sin_buf,sizeof(sin_buf),stdin );
        memset( &Msg, 0x00, sizeof( Msg ));
        strcpy( Msg.UserDefineID, user_define_id );         /* user definition ID */
        Msg.DataType = MBA_DATA_TYPE_TEXT;                  /* data type */
        strcpy( Msg.Topic, topic );                         /* topic */
        Msg.Buf = sin_buf;                                  /* message buffer */
        Msg.MsgSize = strlen( Msg.Buf );                    /* 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 );
        }

/* ---------------------------------------------------------------------------------
     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 + -