123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- // 深圳梦网发展有限公司 梦网网关通用动态库 接口调用示例
- #include <stdio.h>
- #include <stdlib.h>
- #ifdef WIN32
- #include <windows.h>
- #else
- #include <dlfcn.h>
- #define __stdcall
- #define LIB_NAME "libMWGateway.so"
- #endif
- //----------------------------------------------
- char* (__stdcall *MongateGetVer)();
- ////////////////////兼容http/tcp//////////////////////////
- //支持错误号码返回子端口发送
- int (__stdcall *MongateCsSPSendSmsEx)(SOCKET sock, const char* pszMobis,
- const char* pszMsg, int iMobiCount,const char* pszSubPort,char* pszSN, char *pszValid, char* pszInvalid);
- //支持长短信子端口发送
- int (__stdcall *MongateCsSPSendSmsNew)(SOCKET sock, const char* pszMobis,
- const char* pszMsg, int iMobiCount,const char* pszSubPort,char* pszSN);
- ////////////////////tcp//////////////////////////
- //Socket 4 代理连接服务器
- int (__stdcall *MongateConnectSocks4Proxy)(const char* pszProxyIP,int iProxyPort,
- const char* pszIP,int iPort,const char* pszAccount,const char* pszPwd);
- //Socket 5 代理连接服务器
- int (__stdcall *MongateConnectSocks5Proxy)( const char* pszProxyIP,
- int iProxyPort,const char* pszProxyAccount,const char* pszProxyPwd,
- const char* pszIP,int iPort,const char* pszAccount,const char* pszPwd);
- //普通连接服务器
- int (__stdcall *MongateConnect)(const char* pszIP, int iPort, const char* pszAccount, const char* pszPwd);
- //测试及保持长连接
- int (__stdcall *MongateTestConn)(SOCKET sock);
- //断开服务器连接
- void (__stdcall *MongateDisconnect)(SOCKET sock);
- //查询可发条数
- int (__stdcall *MongateQueryBalance)(SOCKET sock);
- //查询已使用条数
- int (__stdcall *MongateQueryUsed)(SOCKET sock);
- //客服端口普通发送函数
- int (__stdcall *MongateCsSendSms)(SOCKET sock, const char* pszMobis,
- const char* pszMsg, int iMobiCount, char* pszSN);
- //客服带子端口发送函数
- int (__stdcall *MongateCsSPSendSms)(SOCKET sock, const char* pszMobis,
- const char* pszMsg, int iMobiCount,const char* pszSubPort,char* pszSN);
- //获取上行
- int (__stdcall *MongateCsGetSms)(SOCKET sock, char strMsg[500][255]);
- //获取状态报告
- int (__stdcall *MongateCsGetStatusReport)(SOCKET sock, char strMsg[500][255]);
- ////////////////////http//////////////////////////
- //http代理
- int (__stdcall *MongateConnectHttpProxy)(const char* pszProxyIP,
- int iProxyPort,const char* pszProxyAccount,const char* pszProxyPwd,
- const char* pszIP, int iPort, const char* pszAccount, const char* pszPwd);
- //普通连接服务器
- int (__stdcall *MongateConnectHttp)(const char* pszIP, int iPort, const char* pszAccount, const char* pszPwd);
- //测试及保持长连接
- int (__stdcall *MongateTestConnHttp)(SOCKET sock);
- //断开服务器连接
- void (__stdcall *MongateDisconnectHttp)(SOCKET sock);
- //查询可发条数
- int (__stdcall *MongateQueryBalanceHttp)(SOCKET sock);
- //查询已使用条数
- int (__stdcall *MongateQueryUsedHttp)(SOCKET sock);
- //客服端口普通发送函数
- int (__stdcall *MongateCsSendSmsHttp)(SOCKET sock, const char* pszMobis,
- const char* pszMsg, int iMobiCount, char* pszSN);
- //客服带子端口发送函数
- int (__stdcall *MongateCsSPSendSmsHttp)(SOCKET sock, const char* pszMobis,
- const char* pszMsg, int iMobiCount,const char* pszSubPort,char* pszSN);
- //获取上行
- int (__stdcall *MongateCsGetSmsHttp)(SOCKET sock, char strMsg[500][255]);
- //获取状态报告
- int (__stdcall *MongateCsGetStatusReportHttp)(SOCKET sock, char strMsg[500][255]);
- //---------------------------------------------------------------------------
- char* menu[] = {
- "1 - test the connection",
- "2 - query balance",
- "3 - query used sms",
- "4 - send CS sms",
- "5 - send CS Subport sms",
- "6 - recv sms",
- "7 - recv status reports",
- "8 - reconnect",
- "0 - quit",
- NULL
- };
- int bHttp = 0;
- int bProxy = 1;
- char sServer[]={"server1.montnets.com"};
- char sUserId[]={"账号"};
- char sPwd[]={"密码"};
- //---------------------------------------------------------------------------
- int main(void)
- {
- char buf[500] = {0};
- char bufnew[500] = {0};
- int sock = 0;
- char selected = 0;
- char** option = NULL;
- int res = 0;
- void* handle = NULL;
- char msg[10][255] = {0};
- int i = 0;
- //加载动态库
- #ifdef WIN32
- handle = LoadLibrary("MWGateway.dll");
- if (handle == NULL)
- {
- puts("can't load the MWGateway.dll, program End.");
- return 1;
- }
- #else
- handle = dlopen("libMWGateway.so", RTLD_LAZY);
- if (handle == NULL)
- {
- printf("err: %s\n", dlerror());
- puts("can't load the dll.program End");
- return 1;
- }
- #endif
- //读取入口地址
- #ifdef WIN32
- MongateGetVer = (void*)GetProcAddress(handle, "MongateGetVer");
- MongateCsSPSendSmsEx = (void*)GetProcAddress(handle, "MongateCsSPSendSmsEx");
- MongateCsSPSendSmsNew = (void*)GetProcAddress(handle, "MongateCsSPSendSmsNew");
- //tcp
- MongateConnectSocks4Proxy = (void*)GetProcAddress(handle, "MongateConnectSocks4Proxy");
- MongateConnectSocks5Proxy = (void*)GetProcAddress(handle, "MongateConnectSocks5Proxy");
- MongateConnect = (void*)GetProcAddress(handle, "MongateConnect");
- MongateTestConn = (void*)GetProcAddress(handle, "MongateTestConn");
- MongateDisconnect = (void*)GetProcAddress(handle, "MongateDisconnect");
- MongateQueryBalance = (void*)GetProcAddress(handle, "MongateQueryBalance");
- MongateQueryUsed = (void*)GetProcAddress(handle, "MongateQueryUsed");
- MongateCsSendSms = (void*)GetProcAddress(handle, "MongateCsSendSms");
- MongateCsSPSendSms = (void*)GetProcAddress(handle, "MongateCsSPSendSms");
- MongateCsGetSms = (void*)GetProcAddress(handle, "MongateCsGetSms");
- MongateCsGetStatusReport = (void*)GetProcAddress(handle, "MongateCsGetStatusReport");
- //http
- MongateConnectHttpProxy = (void*)GetProcAddress(handle, "MongateConnectHttpProxy");
- MongateConnectHttp = (void*)GetProcAddress(handle, "MongateConnectHttp");
- MongateTestConnHttp = (void*)GetProcAddress(handle, "MongateTestConnHttp");
- MongateDisconnectHttp = (void*)GetProcAddress(handle, "MongateDisconnectHttp");
- MongateQueryBalanceHttp = (void*)GetProcAddress(handle, "MongateQueryBalanceHttp");
- MongateQueryUsedHttp = (void*)GetProcAddress(handle, "MongateQueryUsedHttp");
- MongateCsSendSmsHttp = (void*)GetProcAddress(handle, "MongateCsSendSmsHttp");
- MongateCsSPSendSmsHttp = (void*)GetProcAddress(handle, "MongateCsSPSendSmsHttp");
- MongateCsGetSmsHttp = (void*)GetProcAddress(handle, "MongateCsGetSmsHttp");
- MongateCsGetStatusReportHttp= (void*)GetProcAddress(handle, "MongateCsGetStatusReportHttp");
- #else
- MongateGetVer = dlsym(handle, "MongateGetVer");
- MongateCsSPSendSmsEx = dlsym(handle, "MongateCsSPSendSmsEx");
- MongateCsSPSendSmsNew = dlsym(handle, "MongateCsSPSendSmsNew");
- //tcp
- MongateConnectSocks4Proxy = dlsym(handle, "MongateConnectSocks4Proxy");
- MongateConnectSocks5Proxy = dlsym(handle, "MongateConnectSocks5Proxy");
- MongateConnect = dlsym(handle, "MongateConnect");
- MongateTestConn = dlsym(handle, "MongateTestConn");
- MongateDisconnect = dlsym(handle, "MongateDisconnect");
- MongateQueryBalance = dlsym(handle, "MongateQueryBalance");
- MongateQueryUsed = dlsym(handle, "MongateQueryUsed");
- MongateCsSendSms = dlsym(handle, "MongateCsSendSms");
- MongateCsSPSendSms = dlsym(handle, "MongateCsSPSendSms");
- MongateCsGetSms = dlsym(handle, "MongateCsGetSms");
- MongateCsGetStatusReport = dlsym(handle, "MongateCsGetStatusReport");
- //http
- MongateConnectHttpProxy = dlsym(handle, "MongateConnectHttpProxy");
- MongateConnectHttp = dlsym(handle, "MongateConnectHttp");
- MongateTestConnHttp = dlsym(handle, "MongateTestConnHttp");
- MongateDisconnectHttp = dlsym(handle, "MongateDisconnectHttp");
- MongateQueryBalanceHttp = dlsym(handle, "MongateQueryBalanceHttp");
- MongateQueryUsedHttp = dlsym(handle, "MongateQueryUsedHttp");
- MongateCsSendSmsHttp = dlsym(handle, "MongateCsSendSmsHttp");
- MongateCsSPSendSmsHttp = dlsym(handle, "MongateCsSPSendSmsHttp");
- MongateCsGetSmsHttp = dlsym(handle, "MongateCsGetSmsHttp");
- MongateCsGetStatusReportHttp= dlsym(handle, "MongateCsGetStatusReportHttp");
- #endif
- puts("connecting to the server...");
- puts(MongateGetVer());
- //连接服务器
- if(bHttp)
- {
- if(bProxy)//http代理
- sock = MongateConnectHttpProxy("127.0.0.1",8080,"admin","admin",sServer,80,sUserId,sPwd);
- else
- sock = MongateConnectHttp(sServer,80,sUserId,sPwd);
- }
- else
- {
- if(bProxy)//代理
- //sock = MongateConnectSocks4Proxy("127.0.0.1",1080,sServer,8018,sUserId,sPwd);
- sock = MongateConnectSocks5Proxy("127.0.0.1",1080,"admin","admin",sServer,8018,sUserId,sPwd);
- else
- sock = MongateConnect(sServer,8018,sUserId,sPwd);
- }
- 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 '0'://退出
- puts("Bye!");
- break;
- case '1'://测试连接是否有效
- if(bHttp)
- res = MongateTestConnHttp(sock);
- else
- res = MongateTestConn(sock);
- if(res > 0)
- puts("TestConn is OK");
- else
- printf ("TestConn is ERR,Error Numbers is: %d\n", res);
- break;
- case '2'://查询余额条数
- if(bHttp)
- res = MongateQueryBalanceHttp(sock);
- else
- res = MongateQueryBalance(sock);
- if(res > 0)
- printf ("Your balance is %d\n", res);
- else
- printf ("QueryBalance is ERR,Error Numbers is: %d\n", res);
- break;
- case '3'://查询使用条数
- if(bHttp)
- res = MongateQueryUsedHttp(sock);
- else
- res = MongateQueryUsed(sock);
- if(res > 0)
- printf ("Your Used is %d\n", res);
- else
- printf ("QueryUsed is ERR,Error Numbers is: %d\n", res);
- break;
- case '4'://普通发送
- if(bHttp)
- res = MongateCsSendSmsHttp(sock, "1598675****", "Hello, 中文可以吗 world! http", 1, buf);
- else
- res = MongateCsSendSms(sock, "1598675****", "Hello, world!", 1, buf);
- //res = MongateCsSPSendSms(sock, "13534***346", "Hello,中文可以吗 world!", 1,"1001",buf);
- if ( res == 1)
- printf("Send success.SN is %s\n", buf);
- else
- printf("Send failed. Error Numbers is: %d\n", res);
- break;
- case '5'://子端口发送
- if(bHttp)
- res = MongateCsSPSendSmsHttp(sock, "1598675****", "Hello, 中文可以吗 world! http", 1,"1001", buf);
- else
- res = MongateCsSPSendSms(sock, "1598675****", "Hello,中文可以吗 world!", 1,"1001",buf);
- /*
- {//返回错误号码
- res = MongateCsSPSendSmsEx(sock, "1598675****", "Hello,中文可以吗 world!", 1,"1001",buf,tmp1,tmp2);
- if(res >0)
- {
- puts(buf);
- }
- puts(tmp1);
- puts(tmp2);
- }
- {//支持长信息
- //res = MongateCsSPSendSmsNew(sock, "1598675****", "Hello,中文可以吗 world!888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", 1,"1001",buf);
- }
- */
- if ( res == 1)
- printf("Send SP success.SN is %s\n", buf);
- else
- printf("Send SP failed. Error Numbers is: %d\n", res);
- break;
- case '6'://获取上行
- if(bHttp)
- res = MongateCsGetSmsHttp(sock, msg);
- else
- res = MongateCsGetSms(sock, msg);
- if (res == 0)
- {
- puts("There is 0 new sms.");
- }
- else
- {
- for (i = 0; i < res; ++i)
- {
- printf("(%d): %s\n", i+1, msg[i]);
- }
- }
- break;
- case '7'://获取状态报告啊
- if(bHttp)
- res = MongateCsGetStatusReportHttp(sock, msg);
- else
- res = MongateCsGetStatusReport(sock, msg);
- if (res == 0)
- {
- puts("There is 0 new StatusReport.");
- }
- else
- {
- for (i = 0; i < res; ++i)
- {
- printf("(%d): %s\n", i+1, msg[i]);
- }
- }
- break;
- case '8'://重连
- //MongateDisconnect(sock);
- //MongateConnect();
- puts("Restart appliction!");
- break;
- default:
- puts("Error choice! Or empty function. Please select again.");
- }
- }while (selected != '0');
- if (sock)
- MongateDisconnect(sock);
- return 0;
- }
|