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

📄 apidemo_sgip.c

📁 sgip的api,包括开发资料
💻 C
字号:
#include    <stdio.h>#include        <stdlib.h>#include    <netinet/in.h>#include    "proxy_api_sgip.h"extern char* APIVersionFlag;typedef unsigned long ULONG;typedef struct tagPureSgipHead{        ULONG nLen;        ULONG nCmdID;        ULONG nNodeNum;        ULONG nTime;        ULONG nSequenceID;}tagPureSgipHead;typedef tagPureSgipHead tagSgipHead;#define SGIP_DELIVER              0x00000004#define SGIP_REPORT                   0x00000005main(argc,argv)int argc;char *argv[]; {    int  ret;    int  i, j;    /*     ** 发送短消息所需要的参数     */    char psSPNumber[22];    char psChargeNumber[22];    unsigned char byUserCount;    char psUserNumber[2100];    char psCorpId[6];    char psServiceType[11];    unsigned char byFeeType;    char psFeeValue[7];    char psGivenValue[7];    unsigned char byAgentFlag;    unsigned char byMTFlag;    unsigned char byPriority;    char psExpireTime[17];    char psScheduleTime[17];    unsigned char byReportFlag;    unsigned char byTPPID;    unsigned char byTPUDHI;    unsigned char byMsgCoding;    unsigned char byMsgType;    unsigned int nMsgLen;    char psMsgContent[161];    char pReserve[9];    unsigned char  *tmpPsz;    /*     ** 消息发送的序列号,用于配对发送消息以及其应答消息, 由应用程序保证其唯一     */    unsigned short  LID, sLid;    /*     ** 接收提交消息的应答消息所需要的缓冲参数     */    int             iStatus;        char pSubmitAckReserve[9];    /*     ** 接收短消息所需要的缓冲参数     */    /*    char psDeliverUserNumber[22];    char psDeliverSPNumber[22];    unsigned char byDeliverTPPID;    unsigned char byDeliverTPUDHI;    unsigned char byDeliverMsgCoding;    unsigned int nDeliverMsgLen;    char psDeliverMsgContent[161];    char psDeliverReserve[9];    */    /*    ** 用于状态报告的缓冲区    */    unsigned long   ulOrgNodeNum;    unsigned long   ulOrgTimeStamp;    unsigned long   ulOrgSequence;        unsigned char   byReportType;    char            psReportUserNum[22];    unsigned char   bystate;    unsigned char   byErrCode;    char            psReportReserve[9];    char sMsg[2048];    int  nLen;    LID = 0;        /*     ** 连接到短消息代理服务器上     */    ret = proxy_login(1);    if(ret == SUCCESS)    {        printf("\nLogin Success!");        printf("\nAPI Version: %s", APIVersionFlag);/*打印版本信息*/    }    else if(ret == FAILURE)        printf("\nLogin Fail!");    else        printf("\nFatal Error!");    for(;;)    {        /******************************************************        ** 提交短消息         *******************************************************/        LID ++;           /* 应用程序自身的序列号,请自己保证唯一,建议采用++操作 */        strcpy(psSPNumber, "8888");        strcpy(psChargeNumber, "13301001234");        byUserCount = 1;        strcpy(psUserNumber, "13301001234");        strcpy(psCorpId, "12345");        strcpy(psServiceType, "TPCQ");        byFeeType = 2;        strcpy(psFeeValue, "20");        strcpy(psGivenValue, "0");        byAgentFlag = 0;        byMTFlag = 0;        byPriority = 0;        psExpireTime[0] = 0;        psScheduleTime[0] = 0;        byReportFlag = 1;        byTPPID = 0;        byTPUDHI = 0;        byMsgCoding = 8;        byMsgType = 0;                strcpy(psMsgContent, "测试短消息12345");        nMsgLen = strlen(psMsgContent);                        /* 保留字段,请填为空 */        strcpy(pReserve, "");                ret = SGIPSnd(            psSPNumber,            psChargeNumber,            byUserCount,            psUserNumber,            psCorpId,            psServiceType,            byFeeType,            psFeeValue,            psGivenValue,            byAgentFlag,            byMTFlag,            byPriority,            psExpireTime,            psScheduleTime,            byReportFlag,            byTPPID,            byTPUDHI,            byMsgCoding,            byMsgType,            nMsgLen,            psMsgContent,            pReserve,            LID);                if( ret == SUCCESS)            printf("\n\nSubmit SM Success!");        else if(ret == FAILURE)        {            printf("\nSubmit SM Fail!");            getchar();        }        else        {            printf("\nFatal Error!");            getchar();        }        /*         ** 接收 CMPP 提交消息的应答        */        ret = SGIPGetSndAck( &sLid,   /*此值为发送短消息时,应用程序填写的序列号*/            &ulOrgNodeNum, &ulOrgTimeStamp, &ulOrgSequence,             &iStatus);        /* 此条生消息发送到短消息中心时的状态,0表示成功,其它表示失败 */                while( ret == SUCCESS )  /* 接收成功 */        {            printf("\nrecv submit ack:LID = %d", sLid);            printf("\nNodeNum:%u, Time:%u, Sequence:%u\n", ulOrgNodeNum, ulOrgTimeStamp, ulOrgSequence);            printf("\nStatus:%d\n", iStatus);                        /* 看是否还有其这的应答消息 */                        ret = SGIPGetSndAck( &sLid,                &ulOrgNodeNum, &ulOrgTimeStamp, &ulOrgSequence,                 &iStatus);        }                        /*         ** 接收从短消息中心下发来的短消息         */        memset(psUserNumber, 0, sizeof(psUserNumber));        memset(psSPNumber, 0, sizeof(psSPNumber));        memset(psMsgContent, 0, sizeof(psMsgContent));        memset(pReserve, 0, sizeof(pReserve));        /*char sMsg[2048];*/        nLen = sizeof(sMsg);        ret = SGIPRcv(sMsg, &nLen);        while( ret == SUCCESS)        {            tagSgipHead* pHead = (tagSgipHead*)sMsg;            switch (ntohl(pHead->nCmdID))            {                case SGIP_DELIVER:                    getdata_from_sgip_recvsm_frame(sMsg, nLen, psUserNumber, psSPNumber,                        &byTPPID, &byTPUDHI, &byMsgCoding, &nMsgLen,                        psMsgContent, pReserve);                    printf("\n\nRecv deliver sm Success!");                     printf("\nUserNumber:%s", psUserNumber);                    printf("\nSpNumber:%s", psSPNumber);                    printf("\nTPPID:%d", byTPPID);                    printf("\nTPUDHI:%d", byTPUDHI);                    printf("\nMsgCoding:%d", byMsgCoding);                    printf("\nMsgLen:%d", nMsgLen);                    printf("\nReserve:%s", pReserve);                                        printf("\nMsgContent(txt):%s", psMsgContent);                    /*                     ** 短消息内容的16进制显示                     */                    printf("\nSM Data Content(hex):");                                tmpPsz = (unsigned char *)psMsgContent;                    while(nMsgLen > 0)                    {                        if(nMsgLen > 16)                            j = 16;                        else                            j = nMsgLen;                                            for(i = 0; i< j; i++)                        {                            printf("%02x_", *(tmpPsz + i));                        }                        printf("\r\n");                        nMsgLen -= j;                        tmpPsz += 16;                    }                                        break;                                    case SGIP_REPORT:                    getdata_from_sgip_rptsm_frame(sMsg, nLen, &ulOrgNodeNum,                         &ulOrgTimeStamp, &ulOrgSequence, &byReportType,                        psUserNumber, &bystate, &byErrCode, pReserve);                    printf("\n\nRecv report sm Success!");                     printf("\nOrgNodeNum:%u", ulOrgNodeNum);                    printf("\nOrgTimeStamp:%u", ulOrgTimeStamp);                    printf("\nOrgSequence:%u", ulOrgSequence);                                        printf("\nReportType:%d", byReportType);                    printf("\nUserNumber:%s", psUserNumber);                    printf("\nState:%d", bystate);                    printf("\nErrCode:%d", byErrCode);                    printf("\nReserve:%s", pReserve);                                        break;                default:                    printf("\nRecv unknown msg, command id:%d", pHead->nCmdID);                    break;                                }            /*             ** 看是否还有其它的消息             */            memset(psUserNumber, 0, sizeof(psUserNumber));            memset(psSPNumber, 0, sizeof(psSPNumber));            memset(psMsgContent, 0, sizeof(psMsgContent));            memset(pReserve, 0, sizeof(pReserve));                    ret = SGIPRcv(sMsg, &nLen);                         }                        /* 等待3秒 */        sleep(1);        /*        i = getchar();        */    }}

⌨️ 快捷键说明

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