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

📄 recvsm.cpp

📁 linux 上CMPP2.0移动通信网关接口API.包括发送端和接受端.实现比较简单的发送功能
💻 CPP
字号:
/*  --------------------------------------------------------------------------    Name:       RecvSM.cpp    Title:      CMPP API of ISMG for CMPP 1.1    Package:    Receive short message sample code for Asiainfo CMPP 1.1 API    Written:    2000/12/20  Asiainfo    Revised:        Synopsis:    Editor:     TAB=4 -----------------------------------------------------------------------------*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "CMPPAPI.hpp"void Usage(char *sProgram);int MOProcess(DeliverResp *pDeliverResp);// public variableschar	sParamFile[100] = "", sMsgFile[100] = "";int		nOutput = 1;extern int CMPPDeliverError(const int nTimeout, DeliverResp *pDeliverResp, int nErrorType);int main(int argc, char ** argv){	int			n;	FILE		*pFile;	int			nTimeout = 0, nFunType = 0;	DeliverResp	theDeliverResp;	char		sTime[20], sSMCNo[20], sStat[8], sSubmitTime[11], sDoneTime[11], sDestTermID[21];	int			nMsgID, nSMCSequence;	// get argument	for(n=1; n<argc; ++n)	{		if(strcmp(argv[n], "-n") == 0)		{        	nOutput = 0;		}		else if(strcmp(argv[n], "-t") == 0)		{			n++;        	nTimeout = atoi(argv[n]);		}		else if(strcmp(argv[n], "-p") == 0)		{			n++;        	strcpy(sParamFile, argv[n]);		}		else if(strcmp(argv[n], "-m") == 0)		{			n++;        	strcpy(sMsgFile, argv[n]);		}		else if(strcmp(argv[n], "-f") == 0)		{			n++;        	nFunType = atoi(argv[n]);		}		else		{			if(nOutput == 1)			{				Usage(argv[0]);			}			exit(1);		}	}		if(strlen(sMsgFile) == 0 || strlen(sParamFile) == 0)	{		if(nOutput == 1)		{			printf("No parameter file or message file!\n");		}		exit(1);		}		// initiate API	if(InitCMPPAPI() != 0)	{		if(nOutput == 1)		{			printf("Fail to call InitCMPPAPI!\n");		}		exit(1);		}		if(nFunType == 1)	{		if(CMPPDeliverCallback(MOProcess) != 0)		{			if(nOutput == 1)			{				printf("Fail to call CMPPDeliverCallback!\n");			}			exit(1);		}	}	else	{		if(nFunType == 0)		{			if(CMPPDeliver(nTimeout, &theDeliverResp) != 0)			{				if(nOutput == 1)				{					printf("Fail to call CMPPDeliver!\n");				}				exit(1);			}			// write receiving short message into files			pFile = fopen(sParamFile, "w");			if(pFile == NULL)			{				if(nOutput == 1)				{					printf("Fail to open file %s!\n", sParamFile);				}				exit(1);			}			fprintf(pFile, "%s\n", theDeliverResp.sMsgID);			fprintf(pFile, "%d\n", theDeliverResp.nMsgLevel);			fprintf(pFile, "%s\n", theDeliverResp.sServiceID);			fprintf(pFile, "%d\n", theDeliverResp.nMsgFormat);			fprintf(pFile, "%s\n", theDeliverResp.sSrcTermID);			fprintf(pFile, "%d\n", theDeliverResp.nIsReply);			fprintf(pFile, "%d\n", theDeliverResp.nMsgLen);			fprintf(pFile, "%s\n", theDeliverResp.sDestTermID);			fclose(pFile);			pFile = fopen(sMsgFile, "wb");			if(pFile == NULL)			{				if(nOutput == 1)				{					printf("Fail to open file %s!\n", sMsgFile);				}				exit(1);			}			fwrite(theDeliverResp.sMsgContent, theDeliverResp.nMsgLen, 1, pFile);			fclose(pFile);		}		else if(nFunType == 2)		{			while(1)			{				if(CMPPDeliver(nTimeout, &theDeliverResp) != 0)				{					if(nOutput == 1)					{						printf("Fail to call CMPPDeliver!\n");					}					continue;				}				printf("\n");				printf("MsgID=%s\n", theDeliverResp.sMsgID);				printf("MsgLevel=%d\n", theDeliverResp.nMsgLevel);				printf("ServiceID=%s\n", theDeliverResp.sServiceID);				printf("MsgFormat=%d\n", theDeliverResp.nMsgFormat);				printf("SrcTermID=%s\n", theDeliverResp.sSrcTermID);				printf("IsReply=%d\n", theDeliverResp.nIsReply);				printf("MsgLen=%d\n", theDeliverResp.nMsgLen);				printf("DestTermID=%s\n", theDeliverResp.sDestTermID);				if(theDeliverResp.nIsReply == 1)				{					CMPPAnalyzeStatusReport(theDeliverResp.sMsgContent, 							sTime, sSMCNo, &nMsgID,							sStat, sSubmitTime, sDoneTime, 							sDestTermID, &nSMCSequence);					printf(	"## status report ##\n"							"time=%s\n"							"smc_no=%s\n"							"msg_id=%010d%05d%05d\n"							"status=%s\n"							"submit_time=%s\n"							"done_time=%s\n"							"termid=%s\n"							"smc_seq=%d\n",							sTime, sSMCNo, atoi(sTime), atoi(sSMCNo), nMsgID,							sStat, sSubmitTime, sDoneTime, 							sDestTermID, nSMCSequence);				}				else				{					printf("\n#%s#\n", theDeliverResp.sMsgContent);				}			}		}		else if(nFunType == 3 || nFunType == 4)		{			if(nFunType == 3)			{				n = 0;			}			else			{				n = 1;			}			if(CMPPDeliverError(nTimeout, &theDeliverResp, n) != 0)			{				if(nOutput == 1)				{					printf("Fail to call CMPPDeliverError!\n");				}				exit(1);			}			printf("$$ Call CMPPDeliverError\n");			printf("%s\n", theDeliverResp.sMsgID);			printf("%d\n", theDeliverResp.nMsgLevel);			printf("%s\n", theDeliverResp.sServiceID);			printf("%d\n", theDeliverResp.nMsgFormat);			printf("%s\n", theDeliverResp.sSrcTermID);			printf("%d\n", theDeliverResp.nIsReply);			printf("%d\n", theDeliverResp.nMsgLen);			printf("%s\n", theDeliverResp.sDestTermID);			printf("content=%s!\n", theDeliverResp.sMsgContent);		}	}	exit(0);	return(0);}void Usage(char *sProgram){	printf("Usage: %s [-n] [-f function] <-t timeout> <-p parameter_file> <-m message_file>\n", sProgram);	printf("       -n: no message output\n");	printf("       -t: waiting time, in second. 0 means wait forever.\n");		printf("       -p: receiving short message parameter file name.\n");	printf("       -m: receiving short message content file name.\n");	printf("       -f: 0=CMPPDeliver, 1=CMPPDeliverCallback, 2=Loop receive\n");	printf("If call CMPPDeliverCallback, %s will receive MO messages continuously until user break.\n", sProgram);	printf("e.g.:  %s -t 10 -p sm.par -m sm.txt\n", sProgram);}int MOProcess(DeliverResp *pDeliverResp){	static int		nCounter = 0;	char			sFileName[100];	FILE			*pFile;	sprintf(sFileName, "%s.%03d", sParamFile, nCounter);	pFile = fopen(sFileName, "w");	if(pFile == NULL)	{		if(nOutput == 1)		{			printf("Fail to open file %s!\n", sFileName);		}		return(1);	}	fprintf(pFile, "%s\n", pDeliverResp->sMsgID);	fprintf(pFile, "%d\n", pDeliverResp->nMsgLevel);	fprintf(pFile, "%s\n", pDeliverResp->sServiceID);	fprintf(pFile, "%d\n", pDeliverResp->nMsgFormat);	fprintf(pFile, "%s\n", pDeliverResp->sSrcTermID);	fprintf(pFile, "%d\n", pDeliverResp->nIsReply);	fprintf(pFile, "%d\n", pDeliverResp->nMsgLen);	fprintf(pFile, "%s\n", pDeliverResp->sDestTermID);	fclose(pFile);	sprintf(sFileName, "%s.%03d", sMsgFile, nCounter);	pFile = fopen(sFileName, "wb");	if(pFile == NULL)	{		if(nOutput == 1)		{			printf("Fail to open file %s!\n", sFileName);		}		return(1);	}	fwrite(pDeliverResp->sMsgContent, pDeliverResp->nMsgLen, 1, pFile);	fclose(pFile);	nCounter++;	return(0);}

⌨️ 快捷键说明

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