永发信息网

求大神讲解怎么实现短信发送

答案:1  悬赏:10  手机版
解决时间 2021-04-02 16:05
求大神讲解怎么实现短信发送
最佳答案
手机的短消息实现目前有三种方法:
1.通过移动网关发送短消息,使用该方法不需要附加的硬件,但是需要到电信部门申请网关,比较适用于一些大型的网络通讯公司开发,目前华为,中兴等公司就做的这方面的工作,并且还有相应的开发包供开发人员使用.
2.在电脑上通过GSM
MODEM向手机发送中文短消息,这是目前比较适合于小项目开发的一种方法,所需硬件包括一款手机,提供GSM
MODEM,以及相应的数据线或是红外线适配器.该方法编码简单,只需对AT指令和串口编程比较熟悉就可以实现,而且对硬件需求不高,并能自动收发短消息.
3.通过一些网站上提供的短信发送功能来实现,比如新浪网,网易都提供这方面的服务,这种方法是这三种方法中实现起来最简单,所需资源最少的,但是对于网站的依赖性太强,对网络的依赖同样无法避免,不适用于项目开发.
通过第二种方法收发短消息又分为三种模式:Block模式、Text模式和Pdu。使用Block机生产厂家提供驱动支持,现在还没有发现哪个厂家公布支持这种短信发送模式,而Pdu模式开发起来比较复杂,并且需要编写专门的函数来将文本转换为Pdu格式,比较繁琐.相对而言,应用Text模式开发及方便也简单,是一种不错的选择,不过使用Text模式开发只能发送ASCII码,对于中文的Unicode码不能发送.
使用Text模式发送短信其实很简单,只要对于AT指令有基本的了解,就能编写出短消息的发送程序,可是一直以来介绍该方法的文章却少之又少,很多人认为使用该方法太简单,不值一提.不过对于简单的应用来说,该方法也不失于一种不错的选择.
短信编码
在收发短信方面,按时间产生先后,共产生了三种模式:Block Mode、基于AT指令的Text Mode、基于AT指令的PDU Modem, Text Mode比较简单,多款诺基亚手机均支持该模式。西门子的手机大多只支持PDU模式,PDU模式是发送或接收手机SMS信息的一种方法,短信息正文经过十六进制编码后被传送。目前,PDU已取代Block Mode,因我们主要探讨PDU模式的发送。以西门子3508手机为例。
SMS是由Etsi所制定的一个规范(GSM 03.40 和 GSM 03.38)。当使用7-bits编码时,它可以发送最多160个字符;但用8-bit编码,最多可以发送140个字符,通常无法直接通过手机显示;还有用16-bit编码时,最多70个字符,被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。今天讨论的是UCS2编码,也就是说,最多只能发送70个字符,不管英文还是中文。
现例如我们现在要发送如下信息,向手机13715342642发送"你好,Hello!"。在没有发送之前,你要清楚,手机SIM卡所在地的短信中心号,并不是你现在所在地方的短信中心号,深圳的短信中心号是:8613800755000,即使到外地,短信中心号仍是深圳。从上面得到了下面的信息:
接收的手机号:13715342642
短信中心号:8613800755000
短信内容:你好,Hello!
在实际使用中,上面这些信息并不为手机所执行,要进行编码手机才会执行,先不管,看看编码后的信息:
0891683108705500F011000D91683117352446F2000800124F60597DFF0C00480065006C006C006F0021
解释一下:
08 - 指的是短信中心号的长度,也就是指(91)+( 683108705500F0)的长度
91 - 指的是短信息中心号码类型。91是TON/NPI遵守International/E.164标准,指在号码前需加'+'号;此外还有其它数值,但91最常用。
683108705500F0 - 短信息中心号码。由于位置上略有处理,实际号码应为:8613800731500(字母F是指长度减1)。这需要根据不同的地域作相应的修改。前面的(08)+(91)+( 683108705500F0)实际上就构成了整个短信的一部份,通称短消息中心地址(Address of the SMSC)。
11 - 文件头字节
00 - 信息类型(TP-Message-Reference)
0D - 被叫号码长度
91 - 被叫号码类型
其实在实际处理中,我们通常把11000D91写死在程序中,因为在国内,这些数据都是不会改变的。
683117352446F2 -被叫号码,经过了位移处理,实际号码为"8613715342642"。上面的(00)+(0D)+(91)+( 683117352446F2),构成了整个短信的第二部份目的地址(TP-Destination-Address)。
00 - 协议标识TP-PID,这里一般为00
08 - 数据编码方案TP-DCS(TP-Data-Coding-Scheme),采用前面说的USC2(16bit)数据编码
00 - 有效期TP-VP(TP-Valid-Period)
12-长度TP-UDL(TP-User-Data-Length),也就是4F60597DFF0C00480065006C006C的长度 36 / 2 = 18 的十六进 12
4F60597DFF0C00480065006C006C 006F0021- 这里就是短信内容了,实际内容为:"你好,Hello!"
AT指令
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
义务大度电子商务有限公司谁知道??是不是骗
魔兽争霸3 澄海3c 里面 都那个地图有隐藏英雄
在中山的我想找一份高薪工作,30岁,会开挖掘
天猫捉猫猫得红包的软件是哪个啊?
刚入手的苹果5序列号怎么查不到想知道是不是
虽然情人节过去了,但是我还是想发
黄石港区黄石菲林威尔门窗怎么去啊,谁知道地
读下面一段文字,根据拼音填写汉字。(用正楷
舞曲瞎嘎啦嘎这是什么歌曲歌词
什么时间去香港旅游最适宜
伊奈丝蒂是韩国的品牌吗?我朋友在韩国怎么没
有青浦到枫泾的地铁吗
暗黑3 s4赛季地精宝藏怎么开
衡水有什么银行招聘
请问汪钟鸣的赠汪伦书法作品多少钱一平尺
推荐资讯
海南买房咨询
判断题健康人一次献血600mL不会影响健康.
单选题Reading articles like tha
oppor9soppo账号怎么消除
微软应该买下Unity公司么
中国 城市最长的名字
金仕堡健身房怎么样
为什么C盘所有文件大小加起来不到30G却显示已
什么是算法,为什么需要学算法,以及算法学到
我今年31岁,做过很长时间的后勤行政,今年干
宝翔红木家具刺猬梨八件套典藏宝典价格是多少
丽字在韩语里有几种读法?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?