📄 cmppapi_test.cpp
字号:
// CMPPAPI_TEST.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "cmpp_sock.h"
#include "cmpp_types.h"
#include "cmpp_error.h"
#include "cmpp_proto.h"
#include "cmpp_api.h"
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "..\\api\\cmppapi.lib")
cmpp_conn sp_conn;
void sp_com_set_submit(cmppg_submit *cs, char *msisdn, void *sms, int sms_len)
{
cmpp_submit_sm_init(cs);
cmpp_submit_sm_set_shortmsg(cs, sms, sms_len);
cmpp_submit_sm_set_msglevel(cs, 5); //priority < 9
cmpp_submit_sm_set_regdelivery(cs, NO_STATUSREPORT); //no status report
cmpp_submit_sm_set_protoid (cs, 0, 0);
cmpp_submit_sm_set_msgformat(cs, MSG_FORMAT_GB);
cmpp_submit_sm_set_validate(cs, 10);
cmpp_submit_sm_set_srcaddr(cs, "09876", 5);
cmpp_submit_sm_set_dstaddr(cs, msisdn, strlen(msisdn));
cmpp_submit_sm_set_svc_type(cs, "9999", 4);
return;
}
int main(int argc, char* argv[])
{
cmpp_status_t stat = 0; //cmpp_status_t == int
cmppg_connect login_pkg;
cmppg_ismg_packet cp;
cmppg_submit cs;
int cp_len;
int cp_cmd;
int cp_sid;
ZeroMemory(&login_pkg, sizeof(cmppg_connect));
ZeroMemory(&cp, sizeof(cmppg_ismg_packet));
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
// 1. Login
printf("Try to connect...");
stat = cmpp_connect_to_ismg("127.0.0.1", 7890, &sp_conn);
if(stat != CMPP_SUCCESS)
{
printf("Failed!\n");
goto finished;
}
printf("Connected!\nTry to login...");
//企业代码或用户名+口令
cmpp_login_value_set(&login_pkg, "954321", "954321", 0x20);
stat = cmpp_login(&sp_conn, &login_pkg);
if(stat != CMPP_SUCCESS)
{
printf("Failed!\n");
goto finished;
}
printf("Logined!\n");
// 2. Submit
sp_com_set_submit(&cs, "13012345678", "test", strlen("test"));
stat = cmpp_submit(&sp_conn, &cs);
if (CMPP_SUCCESS != stat)
{
printf("Failed To Submit, stat = [%d]!\n", stat);
goto finished;
}
stat = cmpp_recv(&sp_conn, &cp, 30);
if (CMPP_SOCKET_RECVTIMEOUT == stat)
{
printf("Receive Response Timeout!\n");
goto finished;
}
if (CMPP_SUCCESS != stat)
{
printf("Receive Response Failed!\n");
goto finished;
}
cp_len = ntohl( cp.pk_head.nTotalLength );
cp_cmd = ntohl( cp.pk_head.nCommandId );
cp_sid = ntohl( cp.pk_head.nSequenceId );
printf("<ICP_RECV>[Length = 0x%08x][type = 0x%08x][seq = 0x%08x]\n", \
cp_len, cp_cmd, cp_sid);
if (CMPP_SUBMIT_RESP == cp_cmd)
{
printf("Success To Submit!\n");;
}
// 3.Receive Deliver
while(1)
{
stat = cmpp_recv(&sp_conn, &cp, 30);
if (CMPP_SOCKET_RECVTIMEOUT == stat)
return true;
if (CMPP_SUCCESS != stat)
{
printf("cmpp_recv() failed with status = [0x%08x]!\n", stat);
goto finished;
}
cp_len = ntohl( cp.pk_head.nTotalLength );
cp_cmd = ntohl( cp.pk_head.nCommandId );
cp_sid = ntohl( cp.pk_head.nSequenceId );
printf("<ICP_RECV>[Length = 0x%08x][type = 0x%08x][seq = 0x%08x]\n", \
cp_len, cp_cmd, cp_sid);
if ( (CMPP_DELIVER == cp_cmd) || (CMPP_ACTIVE_TEST == cp_cmd) )
{
//MO
if (CMPP_DELIVER == cp_cmd)
{
if (1 == cp.pk_data.pk_deliver.cRegisteredDelivery)
{
printf("\t<Status-Report>[status = %s][dstaddr = %s]\n", cp.pk_data.pk_deliver.pk_sm.sReport.sStat, \
cp.pk_data.pk_deliver.pk_sm.sReport.sDestTermId);
printf("\t[stime = %s]\t[dtime = %s]\n", cp.pk_data.pk_deliver.pk_sm.sReport.sSubmitTime, \
cp.pk_data.pk_deliver.pk_sm.sReport.sDoneTime);
}
else
{
printf("\t[shortmsg] = %s\n", cp.pk_data.pk_deliver.pk_sm.sMsgContent);
}
//调用cmpp_deliver_resp做回复应答
}
if (CMPP_ACTIVE_TEST == cp_cmd)
{
//活动测试应答
stat = cmpp_active_test_resp(&sp_conn, cp_sid);
if (CMPP_SUCCESS != stat)
{
printf("cmpp_active_test_resp() failed with status = [0x%08x]!\n", stat);
goto finished;
}
printf("<SMG>ActiveTest!\n");
}
}
else
{
//MT resp
if (CMPP_SUBMIT_RESP == cp_cmd)
{
printf("Receive Submit Resp!\n");
}
}
}
finished:
cmpp_disconnect_from_ismg(&sp_conn);
WSACleanup();
system("pause");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -