用短信猫发送长短信这种短信发送设备发送注册验证码之类的合法么

trackbacks-0
JAVA发送SMS短信有两种方法:一是通过运营商的网关;二是通过短信猫,不是很复杂(本文主要介绍)。
一、SMS短信发送方式(2种)
1、在Java编程中可以通过Java Comm类进行手机与电脑的串口通讯,并通过AT指令控制手机操作。(最底层方式)
2、SMSLib项目,封装了底层AT指令集,不需自己在去写底层的 AT指令与手机进行通讯。(需要SMSLib开发包,没有完整的API文档,只能通过样例查看,其运行时需要slf4j(类似log4j)和Java comm的支持)
二、所需的Java comm 文件及配置方法:
(1)下载文件:javacomm20-win32.zip
JAVA_HOME%是jdk的路径,而非jre。SMSlib 只支持JDK1.6及以上.
1.comm.jar提供了通讯用的java API。拷贝到%JAVA_HOME%\jre\lib\ext目录。
2.win32com.dll提供了供comm.jar调用的本地驱动接口。拷贝到%JAVA_HOME%\bin
m.properties是这个驱动的类配置文件。复制到%JAVA_HOME%\jre\lib目录。
(2)下载SMSLib
三、开发步骤:
(1)创建并配置相关对象并启动服务
& // 创建服务对象。(仅且只有一个服务对象,但可以有多个网关)
&& this.srv = new Service();
&& // 创建一个GSM modem 类型代替网关(也可以创建别的类型)。
&& SerialModemGateway gateway = new SerialModemGateway("1", "COM1", 57600, "Nokia", "");
&& gateway.setProtocol(Protocols.PDU);// 设置PDU协议(PDU是默认的,也可以设置为TEXT简单文本协议).
&& gateway.setInbound(true);//设置网关能否接收消息(入站)
&& gateway.setOutbound(true);//设置网关能否发送消息(出站)
&& gateway.setSimPin("0000");// Let SMSLib know which is the SIM PIN.
&& //对于异步处理短信时,才采用事件驱动机制,如下:
&& //设置事件的回调类(以下仅包括一部分.每个事件都是一个实现对应接口的类并实现其process方法).
&& this.srv.setInboundMessageNotification(inboundNotification);//收到短信事件函数
&& this.srv.setCallNotification(callNotification);//接到电话事件函数
&& this.srv.setGatewayStatusNotification(statusNotification);//网关状态变化事件函数
&& this.srv.setOrphanedMessageNotification(orphanedMessageNotification);
&& this.srv.addGateway(gateway);// 添加网关到服务对象中.
&& this.srv.startService();// 启动服务对象.
(2)读取短信
同步读取示例:
&& msgList = new ArrayList&InboundMessage&();
&& //读取信息(主要方法)--两个参数指定要保存的位置和要读取的短信的类型,如已读,未读,信息报告等。
&& this.srv.readMessages(msgList, MessageClasses.ALL);
&& for (InboundMessage msg : msgList)
&&& System.out.println(msg);
There are two ways to read messages:
The synchronous way: just call the readMessages() method of the Service class. SMSLib will iterate all defined gateways, collect messages from all and return them in a collection. Note that you will be blocked until SMSLib returns. There are many forms of the readMessages() call - choose the one according to your needs.
The asynchronous way: you can implement some callback methods in your code (listeners) and pass them to the Service. SMSLib will then automatically call you upon message reception. For more information, see Callback methods.
同步读取:this.srv.readMessages(msgList, MessageClasses.ALL);
异步读取:在事件处理函数中读取.
(3)发送短信
There are two ways to send a message:
The synchronous way: create a message object and call the sendMessage() method of the Service class. Note that you will be blocked until SMSLib returns. Upon return, you can examine the message object to see the fate of your message.
The asynchronous way: use the queueMessage() family of methods to queue your message. Queueing a message returns control immediately to you. SMSLib keeps this message in internal queues and send its in the background. To learn about the fate of your message, you should setup a IOutboundMessageNotification callback method (see Callback methods).
同步发送:sendMessage()
异步发送:queueMessage()
gateway的概念的解释介绍:
&&&&&& gateway是用来收发sms短信的一个设备或者一个服务的接口,一个网关可以是一个gsm modem 也可以是一个服务提供商,smslib 可以同时处理多个gateway
发送优先级:
Smslib 发送短信可以提供一个无限制的优先级,(就是发送多条短信时的一个策略,哪个先发,哪个后发),smslib 优先级策略是跟你的gateway(gsm modem 或者是短信提供商)对应的,除非他们是伪照的。
异步、同步接收
Smslib 有两个方式接收短信
1.&&&&&& 同步接收:你可以随时的调用read()方法来接收短信。
2.&&&&&& 异步接收:等待smslib 自动接收短信,当短信到来时。
异步、同步发送
Smslib 同样有两种方式去发送短信
1.&&&&&& 同步发送:当你的app使用smslib 发送一条短信时,app线程将会锁定,直到短信发送完毕,或是发送失败。
2.&&&&&& 异步发送:当你使用这种方式发送一条短信时,app 线程不会锁定,smsliib 会马上返回,smslib 会将你的短信(s)在后台发送。你可以选择是否提醒发出短信的状态。
当有新事件发生时(收到新短信,或者是一条短信发送成功或者是失败),smslib 可以定义回调方法(事件驱动)
Inbound voice calls:当有一电话打进时,你可以设置是否提醒你,请注意这个呼叫将会自动的无条件的自动挂断
Inbound messages:每当有新的短信来到时,smlib 可以设置调用你的指定的方法
Outbound messages:当你使用异步发送信息时,你可以调用你指定的方法来得到已经发送的短信的状态信息等。
Gateway status changes:smslib 可以提醒你每次gateway 改变状态的情况
Queue sending operation:smslib 可以随时随刻的准备发送一条短信,可以随时随地的取到当前短信的发送状态。
阅读(6753)
阅读排行榜
评论排行榜本帖子已过去太久远了,不再提供回复功能。love_mgjy 的BLOG
用户名:love_mgjy
文章数:13
访问量:6130
注册日期:
阅读量:5863
阅读量:12276
阅读量:376038
阅读量:1069187
51CTO推荐博文
zabbix通过gnokii调用短信猫发送短信告警使用zabbix以来,刚开始想直接通过zabbix调用短信猫来进行短信告警发送,但一直没有成功,后来就通过gnokii调用短信猫来进行短信告警发送,下面是我配置gnokii发短信告警的方法:1,首先将短信猫插入在服务器中,可以通过执行‘dmesg&|&grep&ttyUSB’查看是否发现短信猫:代码:&全选#&dmesg&|&grep&ttyUSB#&usb&2-2.1:&FTDI&USB&Serial&Device&converter&now&attached&to&ttyUSB0#&ls&/dev/ttyUSB*#&/dev/ttyUSB02,安装gnokii,我使用的是‘gnokii-0.6.31.tar.gz’&gnokii-0.6.31.tar.gz(1.6&MiB)&被下载&5&次代码:&全选#&tar&-zxf&gnokii-0.6.31.tar.gz#&./configure#&make&&&&make&install#&whereis&gnokii#&gnokii:&/usr/local/bin/gnokii3,配置gnokii将源码包里的:&Docs/sample目录下的gnokiirc&文件(这个配置文件是gnokii的配&置文件)拷贝到/etc下,我的配置文件如下:代码:&全选#&cat&/etc/gnokiirc&|&grep&-v&'#'&|&grep&-v&^$[global]port&=&/dev/ttyUSB0&&#短信猫所在接口[/color]model&=&ATinitlength&=&defaultconnection&=&serialuse_locking&=&no[color=#FF4000]serial_baudrate&=&9600&&#短信猫波特率,国内一般默认为9600smsc_timeout&=&10[flags][gnokii][xgnokii]allow_breakage&=&0[gnokiid]bindir&=&/usr/local/sbin/&&&#gnokii路径[connect_script]TELEPHONE&=&[disconnect_script][logging]debug&=&onrlpdebug&=&offxdebug&=&off[phone_fake]port&=&foobarmodel&=&fakeconnection&=&serial[fake_driver]sms_inbox&=&/tmp/sms3,测试短信猫代码:&全选#&echo&"短信测试"&|&gnokii&&--sendsms&&138xxxxxxxx4,zabbix通过调用gnokii脚本,执行短信发送,我的脚本如下,比较简单,欢迎大家的指正:代码:&全选#!/bin/bash#SMS&with&gnokiiPATH=/bin:/sbin/:/usr/bin:/usr/sbin:/usr/local/bin/export&LANG=en_US.UTF-8LOGFILE='/tmp/zabbix_sms.log'DT=$(date&+%F'&'%T)echo&"***************************START:$DT************************************"&&&&$LOGFILEecho&'Recipient='$1''&&&&$LOGFILEecho&'Subject='$2''&&&&$LOGFILEecho&'Message='$3''&&&&$LOGFILEecho&``&&&&$LOGFILEMOBILE_NUMBER=`echo&"$1"`#&Log&itecho&'Send&Command:'&&&&$LOGFILEecho&'echo&$3&|&gnokii&--sendsms&$MOBILE_NUMBER&'&&&&$LOGFILEecho&``&&&&$LOGFILE#&Send&itecho&'Sending&Process:'&&&&$LOGFILEecho&"$3"&|&gnokii&--sendsms&"$MOBILE_NUMBER"&1&&$LOGFILE&2&&1#EOFDT=$(date&+%F'&'%T)echo&"***************************STOP:$DT************************************"&&&&$LOGFILEecho&-e&'\n'&&&&$LOGFILE注意,在我的脚本中添加了‘export&LANG=en_US.UTF-8’,如果你的系统编码是en_US.UTF-8则不需要,如果不是在发送短信时中文会无法解析,发出的后短信内容为空,这个问题当初给我增加了一些麻烦,当初我那台服务器是同事配置,它默认安装时选择的是中文5,配置zabbix首先在media&types中创建,类型为脚本,然后输入脚本名称;然后去Users中为用户添加media,并设备手机号最后去配置一个actions,并且测试。到此zabbix通过gnokii调用短信猫发送短信告警基本上配置完成了,如果大家在配置过程中有问题,随时可以在论坛或群里讨论,如果大家有谁通过zabbix直接调用短信猫并成功的,希望能共享出来,谢谢!本文转自
了这篇文章
类别:┆阅读(0)┆评论(0)java调用短信猫发短信示例
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了java调用短信猫发短信示例,需要的朋友可以参考下
具体的操作步骤如下:1、把smslib-3.3.0b2.jar、comm.jar与log4j-1.2.11.jar,放入到工程的lib中;2、把m.properties放到%JAVA_HOME%/jre/lib下;3、把win32com.dll放到%JAVA_HOME%/jre/bin下;4& 把comm.jar放到%JAVA_HOME%/jre/ext下注意:路径放错,调用起来就会报错;JDK的版本,用的版本是jdk-1_5_0_04。
代码如下:ackage com.alonely.import org.smslib.IOutboundMessageNimport org.smslib.Outbou、ndMimport org.smslib.Simport org.smslib.Message.MessageEimport org.smslib.modem.SerialModemG
public class SendMessage {&public class OutboundNotification implements IOutboundMessageNotification {& public void process(String gatewayId, OutboundMessage msg) {&& System.out.println("Outbound handler called from Gateway: "&&&& + gatewayId);&& System.out.println(msg);& }&}&@SuppressWarnings("deprecation")&public void sendSMS(String mobilePhones, String content) {& S& OutboundM& OutboundNotification outboundNotification = new OutboundNotification();& srv = new Service();& SerialModemGateway gateway = new SerialModemGateway("3",&&& "COM3", 9600, "wavecom", ""); //设置端口与波特率& gateway.setInbound(true);& gateway.setOutbound(true);& gateway.setSimPin("0000");& gateway.setOutboundNotification(outboundNotification);& srv.addGateway(gateway);& System.out.println("初始化成功,准备开启服务");& try {&& srv.startService();&& System.out.println("服务启动成功");&& String[] phones = mobilePhones.split(",");&& for (int i = 0; i & phones. i++) {&&& msg = new OutboundMessage(phones[i], content);&&& msg.setEncoding(MessageEncodings.ENCUCS2); // 中文&&& srv.sendMessage(msg);&& }&& srv.stopService();& } catch (Exception e) {&& e.printStackTrace();& }&}&public static void main(String[] args) {& SendMessage sendMessage = new SendMessage();& sendMessage.sendSMS("您要发送的手机号", "您要发送的内容!");&}}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
你必须非常努力,才能看起来毫不费力!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(487)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'短信猫使用技巧:个别短信猫过几天后就不可以发送短信的解决方法',
blogAbstract:'\r\n有不少朋友在使用短信猫时都遇到过一个头疼的问题:就是每过几天,大约8-10天就有会不能发送短信的情况,只有重新插拔短信猫后,才又能收发短信。为什么会出现这个情况呢?\r\n导致出现这个问题的情况有很多:\r\n1、你发送的短信程序有问题给短信猫错误的指令导致;(最主要原因)2、设备存在问题模块质量并不是那么好;3、短信猫是进行收发并用,在短信猫遇到要接收短信时,程序没有及时的给予指令处理短信导致短信存在卡里时间长卡储存量多了导致;4、信号问题导致;5、电压不稳定导致;6、其他运营商或者卡的问题等等。其实设备能在8天-10天发不出短信,这种情况算不错的了,因为模块厂家只是检测保证7*24小时不间断功能能力为合格模块。没有给予你1个月或者1年的保证不间断工作的压力。这是机器需要休息的。',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:3,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'你必须非常努力,才能看起来毫不费力!',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 短信验证码发送平台 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信