📄 note.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 + -