// 深圳梦网发展有限公司 梦网网关通用动态库 接口调用示例 #include #include #ifdef WIN32 #include #else #include #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; }