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

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 614

【NLG】(六)文本生成评价指标—— ROUGE原理及代码示例

前奏: 【NLG】(一)文本生成评价指标——BLEU原理及代码示例 【NLG】(二)文本生成评价指标—— METEOR原理及代码示例 【NLG】(三)文本生成评价指标—— ENTROPY原理及代码示例 【NLG】(四)文本生成评价指标—— diversity原理及代码示例 【NLG】(五)文本生成评价指标—— kl_divergence原理及代码示例 1.ROUGE原理 2.优缺点 3.如何算ROUGE ...

凝眸伏笔的博客 1万+

【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

人工智能的未来:从弱 AI 到通用人工智能(AGI)

从最初的简单自动化程序,到如今的深度学习大模型(如 ChatGPT、DeepSeek、Grok),AI 逐步从弱人工智能(Weak AI)向更智能、更自主的方向发展。AI 的发展将影响就业市场,取代重复性、低技能的工作,同时创造新的高技能岗位。尽管深度学习带来了巨大的进步,但它仍然依赖大量标注数据进行训练,对新环境的泛化能力有限,这也是当前 AI 迈向 AGI 的关键障碍之一。本文将探讨 AI 从弱 AI 进化到 AGI 的可能性,分析目前 AI 技术的局限性,并展望未来 AI 在各个行业的影响。

qq_20245171的博客 1万+

PHP CPP

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

专注-享学课堂 1310

高通平台Android稳定性调试笔记:手把手教你用T32、Crash Utility分析Kernel Panic与RAM Dump

本文详细介绍了高通平台Android内核崩溃的分析方法,包括使用T32 Simulator和Crash Utility工具链解析Kernel Panic与RAM Dump。从环境配置、dump文件预处理到高级调试技巧,手把手教你如何定位和解决Android系统崩溃问题,特别适用于MSM/SA8155平台的开发者。

weixin_42543046的博客 527

AMBA-CHI协议详解(七)

本节描述该协议包含的支持系统保序需求的机制。

Crazzy_M的博客 1158

DTO的应用

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

博客标题不能为空 1064

UNet 改进(19):与ASPP结合的图像分割模型

这个代码实现了一个改进版的UNet模型,在传统的UNet架构基础上,引入了ASPP模块来增强模型捕获多尺度上下文信息的能力。​​UNet主干网络​​:经典的编码器-解码器结构,带有跳跃连接​​ASPP模块​​:位于瓶颈层,用于提取多尺度特征。

2401_82355416的博客 878

观察者模式

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

呆若木鸡的专栏 922

RK3568笔记十七:LVGL v8.2移植

若该文为原创文章,转载请注明原文出处。本文介绍嵌入式图形库移植到Linux开发板ATK-RK3568上的步骤。

4232

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

SilenceBurster的专栏 588

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

阿里云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

老版QQ原生表情gif动态

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 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、付费专栏及课程。

余额充值