📄 newapitest.c
字号:
//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 + -