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

📄 newapitest.c

📁 用c/c++实现的一个CMPP API
💻 C
📖 第 1 页 / 共 3 页
字号:
        //nBufferSize        snprintf(sConfigName,sizeof(sConfigName),"%s[%d]","nBufferSize",i);        if( NULL == sCfgsReadNumber( psConfigFile, sSectionName, sConfigName,            &grecConnect[i].nBufferSize) )        {            printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);            return -1;        }                //nMsgLen;        snprintf(sConfigName,sizeof(sConfigName),"%s[%d]","nMsgLen",i);        if( NULL == sCfgsReadNumber( psConfigFile, sSectionName, sConfigName,            &grecConnect[i].nMsgLen) )        {            printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);            return -1;        }           //sContentFile[256];         snprintf(sConfigName,sizeof(sConfigName),"%s[%d]","sContentFile",i);        if( NULL == sCfgsReadString(psConfigFile,                                     sSectionName,                                    sConfigName,                                     grecConnect[i].sContentFile,                                      sizeof(grecConnect[i].sContentFile)) )        {            printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);            return -1;        }        vCfgsATrim(grecConnect[i].sContentFile);                //sConfigFile[256];         snprintf(sConfigName,sizeof(sConfigName),"%s[%d]","sConfigFile",i);        if( NULL == sCfgsReadString(psConfigFile,                                     sSectionName,                                    sConfigName,                                     grecConnect[i].sConfigFile,                                      sizeof(grecConnect[i].sConfigFile)) )        {            printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);            return -1;        }        vCfgsATrim(grecConnect[i].sConfigFile);        //read content        fp = fopen(grecConnect[i].sContentFile,"rb");        if(NULL == fp)        {            printf("open file fail ! file name = %s\n\n",grecConnect[i].sContentFile);	    return -1;        }        nLen = fread(grecConnect[i].sMsgContent,1, grecConnect[i].nMsgLen,fp);        if(nLen <=0 )        {            printf("read file fail!\n\n");            return -1;        }        fclose(fp);            }        //read submit section    snprintf(sSectionName,sizeof(sSectionName),"%s","Submit");    //nNeedReply;    snprintf(sConfigName,sizeof(sConfigName),"%s","nNeedReply");    if( NULL == sCfgsReadNumber( psConfigFile, sSectionName, sConfigName,        &grecSubmit.nNeedReply) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    //nMsgLevel;    snprintf(sConfigName,sizeof(sConfigName),"%s","nMsgLevel");    if( NULL == sCfgsReadNumber( psConfigFile, sSectionName, sConfigName,        &grecSubmit.nMsgLevel) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    //nFeeUserType;    snprintf(sConfigName,sizeof(sConfigName),"%s","nFeeUserType");    if( NULL == sCfgsReadNumber( psConfigFile, sSectionName, sConfigName,        &grecSubmit.nFeeUserType) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }        //sFeeTermId[21+ 1];       snprintf(sConfigName,sizeof(sConfigName),"%s","sFeeTermId");    if( NULL == sCfgsReadString(psConfigFile,                                 sSectionName,                                sConfigName,                                 grecSubmit.sFeeTermId,                                  sizeof(grecSubmit.sFeeTermId)) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    vCfgsATrim(grecSubmit.sFeeTermId);        //TP_pid;    snprintf(sConfigName,sizeof(sConfigName),"%s","TP_pid");    if( NULL == sCfgsReadNumber( psConfigFile, sSectionName, sConfigName,        &grecSubmit.TP_pid) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    //TP_udhi;    snprintf(sConfigName,sizeof(sConfigName),"%s","TP_udhi");    if( NULL == sCfgsReadNumber( psConfigFile, sSectionName, sConfigName,        &grecSubmit.TP_udhi) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    //nMsgFormat;    snprintf(sConfigName,sizeof(sConfigName),"%s","nMsgFormat");    if( NULL == sCfgsReadNumber( psConfigFile, sSectionName, sConfigName,        &grecSubmit.nMsgFormat) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    //aFeeType;    snprintf(sConfigName,sizeof(sConfigName),"%s","sFeeType");    if( NULL == sCfgsReadString(psConfigFile,                                 sSectionName,                                sConfigName,                                 grecSubmit.sFeeType,                                  sizeof(grecSubmit.sFeeType)) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    vCfgsATrim(grecSubmit.sFeeTermId);    //sFeeCode;    snprintf(sConfigName,sizeof(sConfigName),"%s","sFeeCode");    if( NULL == sCfgsReadString(psConfigFile,                                 sSectionName,                                sConfigName,                                 grecSubmit.sFeeCode,                                  sizeof(grecSubmit.sFeeCode)) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    vCfgsATrim(grecSubmit.sFeeTermId);    //sValidTime[17 +1];    snprintf(sConfigName,sizeof(sConfigName),"%s","sValidTime");    if( NULL == sCfgsReadString(psConfigFile,                                 sSectionName,                                sConfigName,                                 grecSubmit.sValidTime,                                  sizeof(grecSubmit.sValidTime)) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    vCfgsATrim(grecSubmit.sFeeTermId);    //sAtTime[17 +1 ];    snprintf(sConfigName,sizeof(sConfigName),"%s","sAtTime");    if( NULL == sCfgsReadString(psConfigFile,                                 sSectionName,                                sConfigName,                                 grecSubmit.sAtTime,                                  sizeof(grecSubmit.sAtTime)) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    vCfgsATrim(grecSubmit.sFeeTermId);    //sDestTermId[21 +1];    snprintf(sConfigName,sizeof(sConfigName),"%s","sDestTermId");    if( NULL == sCfgsReadString(psConfigFile,                                 sSectionName,                                sConfigName,                                 grecSubmit.sDestTermId,                                  sizeof(grecSubmit.sDestTermId)) )    {        printf("Config read %s from %s section fail!\n\n",sConfigName,sSectionName);        return -1;    }    vCfgsATrim(grecSubmit.sFeeTermId);    return 0;    }int main(int argc ,char *argv[]){    int  i,j;    int  nRet;    char sConfigFileName[256];    char sConfigString[20];           long    gtimetSendSum    =0;         //发送时间    long    gtimetRecvSum    =0;         //结束时间    long    gRecvDeliverNum  =0;    long    gRecvReceiptNum  =0;    long    gSendFailNum    =0;    long    gSendSuccNum    =0;    long    timetb;    time_t  gtimetBegin =0 ;    time_t  gtimetEnd= 0;    long 	gSendFailTimeOut =0;    RecThreadPara recThreadPara;            //初始化    i = 0,j =0;    vMarkSign();    InitWSA();    memset(&grecConnect,0 , sizeof(grecConnect));    memset(&grecConfig,    0 , sizeof(grecConfig));    memset(sConfigFileName,0 , sizeof(sConfigFileName));    memset(sConfigString,  0 , sizeof(sConfigString));            //读配置文件    if(argc >= 2 )    {        strncpy(sConfigFileName,argv[1],strlen(argv[1]));    }    else    {        strncpy(sConfigFileName,"newapitest.ini",strlen("newapitest.ini"));    }    nRet = nReadConfig(sConfigFileName);    if(0 > nRet)    {        printf("Read config fail !\n\n");        return -1;    }        //启动线程    if(grecConfig.nHighLevel == 1)    {        //高层只支持一个连接        grecConfig.nNrOfConnect = 1;    }    for(i = 0 ; i<grecConfig.nNrOfConnect;i++)    {           memset(&recThreadPara , 0 , sizeof(RecThreadPara));        //API初始化        recThreadPara.nConnNo = i;                if(grecConfig.nHighLevel == 1)        {            nRet = nHInitInterface(grecConnect[i].sConfigFile);        }        else        {            nRet = nInitInterface(grecConnect[i].sConfigFile,&grecConnect[i].CONNFD);        }        if(0 > nRet)        {            printf("Init Fail nRet = %d\n\n",nRet);            return -1;        }                       //启动线程        grecConnect[i].nConnNo = i;        grecConnect[i].nConnectFlag = M_INITED;                for(j = 0; j < grecConnect[i].nSendThreadNum; j++)        {            recThreadPara.nThreadNo = j;                        gnThreadStartFlag = 0;                                    nRet = pthread_create((void*)&grecConnect[i].nSendThreadId[j],NULL,                                   vSendPkg,&recThreadPara);            if(nRet != 0)            {                printf("\tFail to  create send  packet thread No %d\n\n",i);                return -1;            }            else            {                printf("\tSucc to  create send  packet thread No %d\n\n",i);            }            while(gnThreadStartFlag != 1)            {                usleep(1);            }                }                for(j = 0 ; j <grecConnect[i].nRecvThreadNum ; j++)        {            recThreadPara.nThreadNo = j;                        gnThreadStartFlag = 0;            nRet = pthread_create((void *)&grecConnect[i].nRecvThreadId[j],NULL,                                   vRecvPkg,&recThreadPara);            if(nRet != 0)            {                printf("\tFail to  create receive packet thread No %d\n\n",i);                return -1;            }            else            {                printf("\tSucc to  create receive packet thread No %d\n\n",i);            }                        while(gnThreadStartFlag != 1)            {                usleep(1);            }        }    }    signal(SIGINT,(void *)vKillThread);                  for(i=0; i < grecConfig.nNrOfConnect; i++ )    {                   for(j = 0 ; j <grecConnect[i].nSendThreadNum ; j++)        {            nRet = pthread_join(grecConnect[i].nSendThreadId[j],NULL);            //nRet = pthread_cancel(grecConnect[i].nSendThreadId[j]);            if(nRet != 0)            {                printf("\t fail to  join send  packet thread No %d\n\n",i);            }        }        for(j = 0 ; j <grecConnect[i].nRecvThreadNum ; j++)        {            nRet = pthread_join(grecConnect[i].nRecvThreadId[j],NULL);            //nRet = pthread_cancel(grecConnect[i].nRecvThreadId[j]);            if(nRet != 0)            {                printf("\t fail to  join receive packet thread No %d\n\n",i);            }        }        //退出                if(grecConfig.nHighLevel == 1)        {            nHExitInterface();            }        else        {            nExitInterface(grecConnect[i].CONNFD);        }                            }    for(i=0; i < grecConfig.nNrOfConnect; i++ )    {           for(j = 0; j < grecConnect[i].nSendThreadNum ; j++)        {/*                        printf("Conn no %d:\n"                         "\tRecvDeliverNum = %d , RecvReceiptNum = %d \n"                         "\tSendSuccNum    = %d,  SendFailNum = %d \n "                         "\tSendFailTimeOut = %d \n"                         "\tSendTimeSum    = %ld ,RecvTimeSum = %ld\n\n",                         grecConnect[i].nConnNo,                         grecConnect[i].nRecvDeliverNum,                         grecConnect[i].nRecvReceiptNum ,                         grecConnect[i].nSendSuccNum ,                                grecConnect[i].nSendFailNum ,                            grecConnect[i].nSendFailTimeOut,                         grecConnect[i].timetSendEnd-grecConnect[i].timetSendBegin,                         grecConnect[i].timetRecvEnd - grecConnect[i].timetRecvBegin                    ); */            gSendFailNum   += grecConnect[i].nSendFailNum[j];            gSendFailTimeOut += grecConnect[i].nSendFailTimeOut[j];            gSendSuccNum   += grecConnect[i].nSendSuccNum[j];                    }        for(j = 0; j < grecConnect[i].nSendThreadNum ; j++)        {            gRecvDeliverNum+= grecConnect[i].nRecvDeliverNum[j];            gRecvReceiptNum+= grecConnect[i].nRecvReceiptNum[j];           }    	if(grecConnect[i].timetRecvEnd > gtimetEnd)        {	        gtimetEnd = grecConnect[i].timetRecvEnd;	        }        if(grecConnect[i].timetSendBegin < gtimetBegin)    	{	        gtimetBegin = grecConnect[i].timetSendBegin;    	}                timetb = grecConnect[i].timetSendEnd -                               grecConnect[i].timetSendBegin;        gtimetSendSum += timetb;        timetb = grecConnect[i].timetRecvEnd -                               grecConnect[i].timetRecvBegin;        gtimetRecvSum += timetb;    }    printf("\n\t================Statistic Result:===================\n"             "\tRecvDeliverNum = %d,  RecvReceiptNum = %d \n"             "\tSendSuccNum    = %d,  SendFailNum = %d \n "             "\tSendFailTimeOut = %d \n"             "\tSendTimeSum    = %ld ,RecvTimeSum = %ld\n\n",            gRecvDeliverNum,            gRecvReceiptNum,            gSendSuccNum,                        gSendFailNum,            gSendFailTimeOut,            gtimetSendSum,            gtimetRecvSum            );     printf("please input any key to end ......!\n");    scanf("!");        //结束处理    CleanWSA();    return 0;}

⌨️ 快捷键说明

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