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

📄 note.c

📁 用Mongate平台实现的sms通信代码
💻 C
字号:
  //	深圳梦网发展有限公司 梦网网关通用动态库 接口调用示例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifdef WIN32
	#include <windows.h>
#else
	#include <dlfcn.h>
	#define __stdcall  
	#define LIB_NAME "./libMWGateway.so"
#endif

//////////////////////////////////////////////////////////////////////////
int (__stdcall *MongateConnect)(const char*, int, const char*, const char*);
void (__stdcall *MongateDisconnect)(int sock);
int (__stdcall *MongateTestConn)(int sock);
int (__stdcall *MongateCsSPSendSms)(int sock, const char* pszMobis, const char* pszMsg, 
									int iMobiCount,const char* pszSubPort,char* pszSN);
int (__stdcall *MongateCsGetSmsEx)(int sock, char *strMsg);
int (__stdcall *MongateCsGetStatusReportEx)(int sock, char *strMsg);
int (__stdcall *MGhexChrTosrcStr)(const char* srcMsg,char* retMsg);
int (__stdcall *MongateQueryBalance)(int sock);
int (__stdcall *MongateQueryUsed)(int sock);
int (__stdcall *MongateChangePwd)(int sock, const char* pszAccount, const char* pszOldPwd, 
								  const char* pszNewPwd);
//////////////////////////////////////////////////////////////////////////
char* menu[] = {
	"a - send a sms",     //发单向信息,单向网关接口使用
	"b - recv sms",       //接收信息
	"c - recv status reports",  
	"d - test the connection",
	"e - query balance and used",
	"f - change password",
	"q - quit",  
	NULL
};
//////////////////////////////////////////////////////////////////////////
int main(void)
{
	FILE *ofp = fopen("D:\\receive", "wb+");
//	ofp = fopen ("D:\\receive.txt", "wb+");
	int sock = 0;
	int i = 0;
	int res = 0;
	char selected = 0;
	char** option = NULL;	
	void* handle = NULL;
	char pszSN[255] = {0};
	char strMsg[500][255] = {0};
	char srcMsg[255] = {0};
	char destMsg[255] = {0};
	char oldpwd[6]={0};
	char newpwd[6]={0};
	char confirmpwd[6]={0};
	
	#ifdef WIN32
	handle = LoadLibrary("MWGateway.dll");
	#else
	handle = dlopen(LIB_NAME, RTLD_LAZY);
	if (handle == NULL) {
		printf("err: %s\n", dlerror());
		puts("Program terminated!");
		return 1;
	}
	#endif

	#ifdef WIN32
	MongateConnect = (void*)GetProcAddress(handle, "MongateConnect");
	MongateCsSPSendSms = (void*)GetProcAddress(handle, "MongateCsSPSendSms");
	MongateDisconnect = (void*)GetProcAddress(handle, "MongateDisconnect");
	MongateTestConn = (void*)GetProcAddress(handle, "MongateTestConn");
	MongateCsGetSmsEx = (void*)GetProcAddress(handle, "MongateCsGetSmsEx");
	MongateCsGetStatusReportEx = (void*)GetProcAddress(handle, "MongateCsGetStatusReportEx");
	MGhexChrTosrcStr = (void*)GetProcAddress(handle, "MGhexChrTosrcStr");
	MongateQueryBalance = (void*)GetProcAddress(handle, "MongateQueryBalance");
	MongateQueryUsed = (void*)GetProcAddress(handle, "MongateQueryUsed");
	MongateChangePwd = (void*)GetProcAddress(handle, "MongateChangePwd");
	#else
	MongateConnect = dlsym(handle, "MongateConnect");
	MongateCsSPSendSms = dlsym(handle, "MongateCsSPSendSms");
	MongateDisconnect = dlsym(handle, "MongateDisconnect");
	MongateTestConn = dlsym(handle, "MongateTestConn");
	MongateCsGetSmsEx = dlsym(handle, "MongateCsGetSmsEx");
	MongateCsGetStatusReportEx = dlsym(handle, "MongateCsGetStatusReportEx");
	MGhexChrTosrcStr = dlsym(handle, "MGhexChrTosrcStr");
	MongateQueryBalance = dlsym(handle, "MongateQueryBalance");
	MongateQueryUsed = dlsym(handle, "MongateQueryUsed");
	MongateChangePwd = dlsym(handle, "MongateChangePwd");
	#endif
	
	puts("Waiting for connecting to the server......");
	sock = MongateConnect("61.242.89.115", 8018, "SZAEE", "sztest");
//	sock = 6;
	if (sock < 1) {
		printf("fail to connect to the server. Error Numbers is %d\n", sock);
		return 1;
	}

    puts("connect to the server successfully!");
    option = menu;
    do {
		while (*option) {
			puts(*option);
			option++;
		}
		printf("Please select an action:");
		selected = getchar();
		while (getchar() != '\n') ;//empty loop
		
		switch (selected) 
		{
			case 'a':	  
				res = MongateCsSPSendSms(sock, "15989327101", "English,中文", 1, "*", pszSN);//13826559075
				if ( res == 1) {
					printf("Send success.SN is %s\n", pszSN);
				} else {
					printf("Send failed. Error Numbers is %d\n", res);
				}
				break;
			case 'b':
				res = MongateCsGetSmsEx(sock, srcMsg);
				if (res == -1)
					puts("Blank!");
				else if (res == -101)
					puts("Send time out!");
				else if (res == -102)
					puts("Send failed!");
				else if (res == 0) 
					puts("There is 0 new sms."); 
				else if (res > 0) {
					//res = MGhexChrTosrcStr(srcMsg, destMsg);
					for (i = 0; i < res; ++i) {
						//printf("%s\n%s\n", destMsg, srcMsg);
						printf("%s!!!!\n", srcMsg);

						//fwrite(srcMsg, 1, sizeof(srcMsg), ofp);
						//fwrite(destMsg, 1, sizeof(destMsg), ofp);
					}
				}
				break;
			case 'c':      
				res = MongateCsGetStatusReportEx(sock, &strMsg[500][255]);
				printf("%d\n",res);
				if (res == -1)
					puts("Blank!");
				else if (res == -101)
					puts("Send time out!");
				else if (res == -102)
					puts("Send failed!");
				else if (res == 0) 
					puts("There is 0 new sms."); 
				else 
					for (i = 0; i < res; i++) {
					printf("(%d):  %s\n", i+1, strMsg[i]);
					}
				break;
			case 'd':
				res = MongateTestConn(sock);
				if (res == 1)
					printf("The connect is available!\n");
				else if (res == -3)
					printf("The connect is invalidation!\n");
				else 
					printf("Connect time out!\n");
				break;	
			case 'e':
				printf("You have used %d ,and your balance is %d .\n", 
					MongateQueryUsed(sock), MongateQueryBalance(sock));
				break;
			case 'f':
				printf("Please enter your old password: ");
				scanf("%s",oldpwd);
		Enter:	printf("\nPlease enter new password: ");
				scanf("%s",newpwd);
				printf("\nPlease confirm new password: ");
				scanf("%s",confirmpwd);
				if (strcmp(confirmpwd, newpwd) == 0) {
					res = MongateChangePwd(sock, "SZAEE", oldpwd, newpwd);
				} else {
					printf("You've input two different passwords.\n");
					goto Enter;
				}
				if (res == 1) printf("Change password successed!\n");
				else if (res == -3 || res == -4) printf("Time out.\n");
				else printf("Change password failed!\n");
				break;
			case 'q':
				puts("Good Bye! 再见!");
				break;
			default: 
				puts("Error choice! Or empty function. Please select again.");
				break;
		}
	} while (selected != 'q');

	if (sock)
		MongateDisconnect(sock);
	fclose(ofp);
	return 0;
}

⌨️ 快捷键说明

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