C++ 发手机短信(很易很简单)

用C++代码轻松实现:手机发短信特效,很实用的系统软件 个比较早的C++发送手机短信的程序,程序将调用dllforvc.dll程序,使用前请设置好相关参数:端口号、波特率、机器号码、授权号码、发送短信的接收方号码、发送的内容等。本地发短信:106+区号+号码,外地发短信:106+0+区号+号码。 项目截图: 代码截图: 短信平台全面支持移动、联通、电信的所有手机号段,每条短信可接收70个字符,用户在PC客户端最长可输... 阅读详情

由于市场需求,飞鸽传书C/S版XEIM需要集成短信发送功能,于是进行了一番苦而累的研究,今天总算有点点成果,故来自己的网站晒晒,只是点点成果,非常有限,还希望高人能够指点一下。
本文欢迎大家转载,但请注明出处:http://www.freeeim.com/

另外,由于短信群发会造成各种各样的问题,有些是违法的,希望大家别以身试法。

开始吧!实现短信发送,必须有发送短信的设备,我用的是GSM MODEM,设备没什么特别,通电接上电脑就行了,没驱动,没设置。所有问题都在 C++ 编程上,因为设备是COM接口,所以涉及到一些COM I/O 操作,不过非常简单,因为WINDOWS 的所有I/O 都可以用File I/O API 来完成,也就是OpenFile、WriteFile、ReadFile这几个函数啦,简单吧!

第一步:发送Hello world!到你手机
先别急着写代码,我们用现有的工具(超级终端)吧。启动方法【开始】->【所有程序】->【附件】->【通讯】->【超级终端】(别怪我罗嗦,我第一次真的不知道‘超级终端’在哪里),启动后在‘连接描述’对话框的‘名称’里就随便填‘aa’就行了,没意义但必填而已,接着会出现‘连接到’对话框,这里需选一下,在‘连接时使用’选‘COM1’,因为我的 GSM MODEM 是连接在COM1的,要是你的有变动的话,可以尝试选其他,例如‘COM2’,最后按确定,出现‘COM1属性’对话框,按这个参数设置吧:每秒位数[9600],数据位[8],奇偶校验[无],停止位[1],数据流控制[无]。点确定,配置完毕,然后在超级终端的输入框输入‘AT’,如果有显示‘OK’的话,那么你成功了,GSM MODEM 与电脑连接正常。
输入以下指令来发送短信吧:

AT+CMGF=1
// 成功的话会返回‘OK’
AT+CMGS=137888888XX
成功的话会返回‘>’这个大于号,注意,手机号当然要填你自己的啦。
> Hello world!
// 输完Hello world!后,你按住CTRL 然后按 Z 字母键,这是古久以前 DOS 的 EOF 标志。
// 顺利的话,你的手机3秒内会收到短信。
如果你这里没成功,没关系,上GOOGLE或BAIDU找找“超级终端 AT指令之类的”就行了。

第二步:开始C++编程
这里需要了解“短信PDU编码解码”这个问题,可以上GOOGLE 或BAIDU查查,如果我在这里说的话,文章就会太长了,其实这问题很简单,而且我会把处理代码给出来。

PDU编码函数:

LPSTR CXSMSDlg::ChangeCODE(LPCTSTR lpText)
{
 DWORD dwMinSize;
 dwMinSize = MultiByteToWideChar (CP_ACP, 0, lpText, -1, NULL, 0);

 WCHAR *tmp = new WCHAR[dwMinSize];
 // Convert headers from ASCII to Unicode.
 MultiByteToWideChar (CP_ACP, 0, lpText, -1, tmp, dwMinSize);

 char *newTmp = new char[dwMinSize*4];
 memset(newTmp, 0, (dwMinSize-1)*4);

 for(DWORD i=0; i<dwMinSize-1; i++)
 {
  char buf[5];
  sprintf(buf, "%04X", tmp[i]);
  strcat(newTmp, buf);
 }

 return newTmp;
}

// 设置短信中心
LPSTR SMS_Center_CODE(LPCTSTR lpText)
{
 char *tmp = new char[20];
 tmp[0] = '9';
 tmp[1] = '1';
 tmp[2] = '6';
 tmp[3] = '8';
 for (int i=0; i<6; i++)
 {
  tmp[i*2+4] = lpText[i*2+1];
  tmp[i*2+5] = lpText[i*2];
 }
 tmp[14] = 'F';
 tmp[16] = NULL;
 int len = strlen(tmp);
 char szLen[3];
 sprintf(szLen, "%02d", len/2);
 for(i=0; i<18; i++)
 {
  tmp[19-i] = tmp[17-i];
 }
 tmp[0] = szLen[0];
 tmp[1] = szLen[1];

 return tmp;
}

// 手机号码的编码
LPSTR SMS_Phone(LPCTSTR lpText)
{
 char *tmp = new char[15];
 tmp[0] = '6';
 tmp[1] = '8';
 for (int i=0; i<6; i++)
 {
  tmp[i*2+2] = lpText[i*2+1];
  tmp[i*2+3] = lpText[i*2];
 }
 tmp[12] = 'F';
 tmp[14] = NULL;

 char *ret = new char[20+8+6];
 sprintf(ret, "%s%s%s", "11000D91", tmp, "000800");
 delete [] tmp;

 return ret;
}

// 提交短信
void SendSMS()
{
 char *pmsg =pData; //ChangeCODE(pData);
 char *pnum = SMS_Phone(strTmp);
 CString sendText;
 int nLen = (strlen(pnum)+strlen(pmsg)) / 2;
 CString strbbs;
 strbbs.Format("Num Len:%d -- Msg Len%d", strlen(pnum), strlen(pmsg));


 sendText.Format("AT+CMGS=%d %s%s%sa",
   nLen, SMS_Center_CODE(m_strSMSCenter),
   pnum, pmsg);

 CString bbbb;
 bbbb.Format("PDU:%d--TP-UL:%d", nLen, strlen(pmsg));
 delete [] pnum;
}

注明出处:http://www.freeeim.com/

C++对接验证码短信接口DEMO示例 学习编程得第N天,发现一个超简单验证码短信接口对接DEMO示例 步骤 1.注册 互亿无线 账号 2.查找APIID和APIKEY 3.代码的书写 ------------------------------------------------------------------------------------------------------------------------- 注册 互亿无线 账号 网站: http://user.ihuyi.com/?JA9Ewr 查找APII 阅读详情

相关推荐

Android 安全测试思路总结(攻击面)

Android攻击面

Venscor技术养成之路 9214

全网最全c++实现短信验证码

全网最全的c++实现短信验证码的教程: 转载原文链接:https://mp.weixin.qq.com/s/VYMOB-szvMumYgMDyuUNBg

Dlh_king的博客 1467

C#版手机短信发送系统

vs2005已经通过编译 <br>不错的<br>有空就看看吧

C/C++开发,阿里云短信服务接口的c++实现

C/C++开发,阿里云短信服务接口的c++实现,采用acl_master实现调用阿里云短信服务接口,完成签名算法、base64算法及HTTP协议连接通信。

技术需要分享 5207

C#短信发送程序

本程序是一个用C#开发的,通过串口猫,发送短信的程序。采用华为的模块测试。该程序是我开发项目中的一个模块,绝对能用!

vc++编写的 发送手机短信 源代码 sms

vc++编写的 发送手机短信 源代码

C++阿里云短信发送(SendSms)-curl方式

该服务基于阿里云短信服务平台OpenAPI门户-短信服务-短信发送-发送短信(SendSms)进行开发。 SendSms_短信服务_API文档-阿里云OpenAPI开发者门户 (aliyun.com)

chenyan0715的博客 802

c++短信接口开发_c++发送短信验证码通知_c++短信demo示例.docx

c++短信接口开发_c++发送短信验证码通知_c++短信demo示例.docx

为高手准备的例题C++:短信资费(附带答案链接)

发手机短信,一条资费为0.1元,短信内容限定在70字以内(包括70字),如果一条短信超过70字,会自动分割成多条短信发送(每条70字,最后一条小于等于70字)。一共6条短信,字数分别为 10,14,131,132,254,50。编写all函数,计算多条短信的资费,参数为数组a和长度n,每个元素为一条短信的字数。在main里进行测试,答案精确到小数点后1位(单位元)。编写cost函数,计算一条短信的资费,参数为短信字数。

lailaike08的博客 1134

从零开始理解异构算力调度:全国一体化算力算网平台实战解析

本文深入解析了异构算力调度技术在全国一体化算力算网平台中的实战应用。通过资源抽象层设计、动态感知引擎和跨云调度算法,实现AI训练任务的高效资源分配,显著提升计算效率并降低成本。特别针对GPU等异构算力的智能调度方案,为多云协同环境下的AI开发提供实用指南。

weixin_28730927的博客 334

HOPE:基于强化学习的混合策略路径规划器,适用于多样化停车场景

本文提出了一种混合策略路径规划器(HOPE),用于解决自动停车中的路径规划问题。HOPE结合了强化学习(RL)和Reeds-Shepp(RS)曲线,通过动作掩码机制引导RL智能体的探索,并利用Transformer融合环境感知信息与掩码。该方法在多样且复杂的停车场景中实现了超过97%的成功率,并通过真实实验验证了其泛化能力。此外,本文还提出了基于空间与障碍物分布的停车场景难度分级标准,进一步提升了训练与评估的效率。实验结果表明,HOPE在规划成功率和跨场景泛化能力上均优于传统的基于规则算法和朴素强化学习方法

weixin_42783201的博客 1466

【C/C++】如何获取短信验证码---创蓝253短信服务平台

#include <arpa/inet.h>#include <assert.h>#include <errno.h>#include <netinet/in.h>#include <signal.h>#include <stdlib.h>#include <stdio.h>#include <string....

weixin_34363171的博客 255

保姆级教程:用Docker Compose一键部署WVP-PRO+ZLM+录像服务(含Nginx反代)

本文提供了一套完整的容器化GB28181视频平台部署方案,通过Docker Compose实现WVP-PRO、ZLMediaKit(ZLM)和录像服务的一键式部署。详细介绍了环境准备、架构设计、容器化部署实战以及高级配置优化,帮助用户快速搭建高性能视频监控管理平台,适用于安防行业和物联网设备管理场景。

weixin_30415113的博客 861

PHP CPP

Linux开发代码,我改完某一个功能,想马上看一下执行结果,这时在Windows上也可以配相应平台,但是我们还开发一些像PHP扩展去操作一些,假如分布式图片处理,一些缓存系统,这些是针对Linux下PHP进行一些PHP扩展开发。所以,在Windows平台是没法使用的。       这块希望写一个程序能够马上看到,但是我们不需要写一个程序传到服务器上再测试,就太慢了。如果同一个服务器上有多少人

专注-享学课堂 1310

【unity小技巧】常用的方法属性和技巧汇总(长期更新,2025/07/02更新)

Unity开发技巧摘要 本文汇总了Unity开发中的实用技巧,包括移动控制、力应用、物体翻转、单例模式实现等。移动方面介绍了MoveTowards、MovePosition、Translate等方法的区别与应用场景;力应用部分详解了AddForce系列方法的参数和使用方式;物体翻转对比了三种实现方案;单例模式提供了标准实现和泛型优化版本;还收录了绝对值计算、鼠标检测、旋转控制、数值取整等实用代码片段。这些经过验证的技巧能有效提升开发效率,文章将持续更新补充新的实用内容。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3348

基于MATLAB的变分模态分解(VMD)算法详解

变分模态分解(VMD)是一种先进的信号处理方法,通过变分框架将复杂信号分解为多个模态分量。相比传统经验模态分解(EMD),VMD具有坚实的数学基础,能有效抑制模态混叠和端点效应。其核心思想是将信号分解转化为约束优化问题,通过交替方向乘子法迭代求解各模态的中心频率和带宽。VMD在机械故障诊断、生物医学信号处理等领域展现出优越性能,尤其适合处理非平稳非线性信号。该算法通过严格的数学模型实现自适应频谱优化,为信号分析提供了更可靠的工具。

qq_42212808的博客 735

DTO的应用

前几天看了DTO的用法, 根据stackoverflow的资料引导, 看完了>第六章, 专门叙述DTO的章节. 今天在工程中用到一个DTO, 刚开始动手时,还习惯性的想写个struct. 转念一想,前几天白看书了?  就现炒现卖做个DTO玩玩. 感觉还不错啊, 比纯的struct好用多了. /// @file DTO_btn_get_handset_msg_t

博客标题不能为空 1064

我用C#实现上位机数据一键导出Excel:从乱码到百万行数据秒级导出的实战技巧

ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("日报表");// 1. 标题(合并单元格)worksheet.Cells["A1"].Value = $"产线日报表 -DateTimeNowToString// 2. 表头和数据(同上)worksheet.Cells["A3"].Value = "时间";// ...省略表头和数据填充// 3. 合计行(公式计算)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 712

观察者模式

    观察者模式的意图是:定义对象间的一种关系,当一个对象的状态发生变化时,所有依赖于它的对象都能得到通知。    你可以考虑这样一种应用,当一个论坛注册了个新用户后,论坛程序自动发一个站内欢迎消息和email。以后可能还有需求说同时也用手机发一条短信等等。在这里面,新用户是一个对象,发站内欢迎消息是一个对象,发email也是一个对象,还有发手机短信也可以是个对象。当新用户注册时(状态改变)

呆若木鸡的专栏 922

Qt 【window udp 高频采集丢包问题】

使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。

weixin_45397344的博客 177

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

行车百科系列之(一): 被多数人忽略的行车安全大忌(操作篇)

转载自董涛新浪博客http://blog.sina.com.cn/s/blog_41636c450100jhv3.html 

SilenceBurster的专栏 588

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

阿里云C++短信发送程序

阿里云平台短信发送程序之C++版本: #include &lt;stdio.h&gt;   #include &lt;string.h&gt;   #include &lt;openssl/hmac.h&gt; #include &lt;iostream&gt; #include &lt;curl/curl.h&gt; #include &lt;string&gt; #include &lt;...

u012023606的博客 3474

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: Three Ways to Inject Your Code into Another Process
下一篇: cut 用法
ecjtuync
博客等级 码龄20年 157粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值