1.需要用到的结构
typedef struct _SM_PARAM
{
char SCA[16];//+8613552678753// 短消息服务中心号码(SMSC地址)
char TPA[16];// 目标号码或回复号码(TP-DA或TP-RA)
char TP_PID;// 用户信息协议标识(TP-PID),00 GSM短信,[99短信状态报告,内部标识]
char TP_DCS;// 用户信息编码方式(TP-DCS)
char TP_SCTS[16];//030325122030// 服务时间戳字符串(TP_SCTS), 接收时用到
char TP_UD[161];// 原始用户信息(编码前或解码后的TP-UD)
char index;// 短消息序号,在读取时用到
char original[350]; //接收到信息的原码
}SM_PARAM,*LPSM_PARAM;
2.接口函数 2.1 初始化COM口和模块 [成功返回COM口的句柄,失败返回NULL]
HANDLE _stdcall InitComm(int/*COM口的ID*/,BOOL bStatusReport=FALSE/*是否开通短信报告*/);
初始化COM,bStatusReport默认关闭状态,如果需要支持短信状态设置TRUE.建议关闭状态报告 2.2 带参数的初始化 [成功返回COM口的句柄,失败返回NULL]
HANDLE _stdcall InitCommParam(int/*COM口的ID*/,COMMTIMEOUTS/*串口超时结构*/,BOOL bStatusReport=FALSE/*是否开通短信报告*/);
如果需要自己设置COMMTIMEOUTS结构值,就要调此函数,bStatusReport作用同上 2.3 发送新短信 [成功返回TRUE,失败返回FALSE]
BOOL _stdcall SendSMS(HANDLE hComm/*操作COM口的句柄*/,char[16]/*对方手机号*/,char[150] /*发送内容*/,int nSMSType=2/*短信类别,1免提短信,2普通短信*/); 2.3.1 参数说明
hComm 调用InitComm或者InitCommParam返回的值.
char[16] /*对方手机号*/ 16字符 ,对持以下几种
1. 86+手机号 中国移动/中国联通 例如:8615966019901
2. 106+区号+电话号码 中国网通小灵通 例如:10601081015255
3. 直接就是号码. 特殊号码 例如:10086 10010 char[150] 向对方发送短信,发送内容最长140个字节.为70个汉字.超过后系统会自动截断. nSMSType 短信类别,1免提短信,2普通短信 一种是免提短信,直接在屏幕显示内容,不存储.另一种就是普通的短信,需要手动打开.存储SIM卡 2.4 接收短信 [执行成功后返回共收到的短信条数]
int _stdcall ReceiveSMS(HANDLE/*操作COM口的句柄*/,SM_PARAM*/*返回所接收的全部短信*/); 参数说明
HANDLE 操作COM口的句柄,调用InitComm或者InitCommParam后返回的值.
SM_PARAM 存储短信的指针,调用前声明足够大的空间.例如:
//可以存放500条短信的空间,并初始化为空
SM_PARAM[500]={0};
HANDLE hComm = InitComm(1);
int nCount=ReceiveSMS(hComm,SM_PARAM);
接收到新短信后.要注意你初始化COM前是否开通状态报告,如果开通要注意以下信息
/*typedef struct _SM_PARAM
{
char SCA[16];//+8613552678753// 短消息服务中心号码(SMSC地址)
char TPA[16];// 目标号码或回复号码(TP-DA或TP-RA)
char TP_PID;// 用户信息协议标识(TP-PID),00 GSM短信,[99短信状态报告,内部标识]
char TP_DCS;// 用户信息编码方式(TP-DCS)
char TP_SCTS[16];//030325122030// 服务时间戳字符串(TP_SCTS), 接收时用到
char TP_UD[161];// 原始用户信息(编码前或解码后的TP-UD)
char index;// 短消息序号,在读取时用到
char original[350]; //接收到信息的原码
}SM_PARAM,*LPSM_PARAM;*/
for(int i=0;i <nCount;i++)
{
if(SM_PARAM[i].TP_PID=99)
{
//代表此条短信为状态报告,没有实际内容
//注意.如果是状态报告
//SM_PARAM[i].TP_UD 内容为// MO 到达SMSC时间 从本地到短消息中心服务器的时间
//SM_PARAM[i].TP_SCTS 内容为//SMSC 到达 MT时间 从短消息中心服务器下发到目标手机上的时间
char temp[25]={0};
sms_StrToDate(SM_PARAM[i].TP_UD,temp); //转日期格式
meset(temp,0,sizeof(temp));
sms_StrToDate(SM_PARAM[i].TP_SCTS,temp); //转日期格式
}
else
{
//代表真正收到的短信
}
}
//如果对方手机处于有信号或者非停机状态.发送成功后5秒会收到短信报告状态.否则什么时候开机什么时候才会收到报告状态 2.5 删除指定短信或者全部短信 [成功返回TRUE,失败返回FALSE]
BOOL _stdcall DeleteSMS(HANDLE/*COM口的句柄*/,int/*删除指定编号的ID,0代表删除全部短信*/);
参数说明
HANDLE 初始化成功后返回的句柄
int 要删除短信的编号,如果为0,代表清空所有短信.否则删除指定编号的短信 2.6 卸载模块,关闭COM口
void _stdcall UnInitComm(HANDLE/*卸载指定COM口,需要打开时的COM句柄*/);
参数说明
HANDLE 初始化COM口返回的句柄 2.7 附加函数 转换日期[030325122030]格式转成 [2003-3-25 12:20:30]
DLL_DEF int _stdcall sms_StrToDate(const char *pSrc/*短信中的日期串*/,char *pDst/*转换后的空间*/);
参数说明
const char *pSrc SM_PARAM结构中TP_SCTS值.接收到的日期格式
pDst 转换正式日期格式空间
示例
SM_PARAM sms={0};
char date[25]={0};
sms_StrToDate(sms.TP_SCTS,date);
printf( "Date:%s ",date);
*提示:调用接口时.传参时注意参数的大小.如果越界就是产生异常.char[150] 可以存放150个字节.超过后就会越界

短信api接口的更多相关文章

  1. 如何防止短信API接口遍历

    短信API接口在web中得到越来越多的应用,如用户注册,登录,密码重置等业务模块都会使用手机验证码进行身份验证.一般情况下,我们会采用这样的安全策略,将短信发送频率限制在正常的业务流控范围内,比如,一 ...

  2. asp实现阿里大鱼短信API接口的方法

    阿里大鱼是阿里推出的产品,官方提供JAVA..NET.PHP等版本的SDK下载,不知为何,唯独不提供ASP版本的SDK. 不提供没关系,自己写就是了,参照官方提供的API写一个就是了. 本来以为无非是 ...

  3. PHP控制阿里云短信API接口实现短信群发功能

    阿里云短信支持先使用后支付的原则,价格为4分半1条. 通过SDK可以与网站功能的绑定,实现响应的短信发送功能 现已统一合并升级为:消息服务. 消息服务 阿里云消息服务(Message Service, ...

  4. java 调用短信 api 接口发送短信

    参考:   https://blog.csdn.net/u014793522/article/details/59062014 参考 :https://blog.csdn.net/Lu_shilusi ...

  5. 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本

    前言 承接前文<短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求>,文中有讲到一个定位非法IP的shell脚本,现在就来公布一下吧,并没有什么技术难度,只是当时花了些时间去写 ...

  6. php短信验证码接口接入流程及代码示例

    对于绝大部分企业来说,所使用的短信验证码接口都是第三方短信服务商所提供,目前市场上短信服务商有很多,在此向大家推荐一家动力思维乐信,运营13年,值得信赖! 就拿动力思维乐信短信验证码接口为例,详细介绍 ...

  7. ThinkPHP3.2.3框架下接入阿里云短信服务接口实现:注册登录

    首先介绍下短信注册登录流程: 注册页面点击获取手机号验证码按钮,用jquery的click事件POST或GET方法把手机号发送到后台控制器: 后台控制器创建函数,收到手机号后生成随机码,例如:6位的随 ...

  8. 短信API——短信验证码

    简介 短信服务(Short Message Service.SMS)是指通过调用短信发送API,将指定短信内容发送给指定手机用户. 阿里云短信服务 阿里云短信服务产品介绍:https://www.al ...

  9. 短信发送接口被恶意访问的网络攻击事件(四)完结篇--搭建WAF清理战场

    前言 短信发送接口被恶意访问的网络攻击事件(一)紧张的遭遇战险胜 短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本 ...

随机推荐

  1. blkblock 2工具

    http://blog.yufeng.info/archives/tag/blktrace

  2. Android 官方文档:(一)动画和图像 —— 1.5 画布和画图

    The Android framework APIs provides a set 2D drawing APIs that allow you to render your owncustom gr ...

  3. WebLogic Server 12c相对JBoss EAP 6的优势

    原文来自:https://blogs.oracle.com/middlewareplace/entry/why_should_you_choose_oracle 1.多数据中心部署和集群 WebLog ...

  4. Android图片加载框架最全解析(三),深入探究Glide的缓存机制

    在本系列的上一篇文章中,我带着大家一起阅读了一遍Glide的源码,初步了解了这个强大的图片加载框架的基本执行流程. 不过,上一篇文章只能说是比较粗略地阅读了Glide整个执行流程方面的源码,搞明白了G ...

  5. JAVA常见算法题(三十四)---计算加密之后的电话号码

    某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的, 加密规则如下: 每位数字都加上5,然后用和除以10的余数代替该数字, 再将第一位和第四位交换,第二位和第三位交换. 求加密之后的 ...

  6. NFS CIFS SAMBA 的联系和区别

    Common Internet File System, CIFS Server Message Block, SMB Network File System, NFS 在早期网络世界当中,档案数据在 ...

  7. Java 从基础到进阶学习之路---类编写以及文档凝视.

    Java之前在学习过,基础知识还没有忘光,并且这些高级语言实在是太像,所以那些数据类型,或者循环控制流,以及标准设备等等就直接略过不说了. 只是一些重大概念会穿插在文章的介绍中. So,这些文章适合于 ...

  8. C++获得本机所有网卡的IP和MAC地址信息

    一台机器上可能不只有一个网卡,但每一个网卡只有一个MAC地址,而每一个网卡可能配置有多个IP地址:如平常的笔记本电脑中,就会有无线网卡和有线网卡(网线接口)两种:因此,如果要获得本机所有网卡的IP和M ...

  9. 第十一章 AtomicInteger源码解析

    1.原子类 可以实现一些原子操作 基于CAS 下面就以AtomicInteger为例. 2.AtomicInteger 在没有AtomicInteger之前,对于一个Integer的线程安全操作,是需 ...

  10. [leetcode]Populating Next Right Pointers in Each Node II @ Python

    原题地址:https://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ 题意: Follow up ...