Java调用 SMS Cat发短信【短信猫】

居然不能发表SMS Cat的中文名?!

 

这个是 SMS Cat设备

需要插入SIM卡,所以,是需要付短信费的。

 

插好USB和电源后,会安装好驱动,可以在设备管理可以查看到端口号


 

也有一种软件可以测试端口是否可连接:secureCRT


 

新建好connection后,输入AT测试,如果OK就OK。


好了,端口确定没问题了。

 

 

接着,在你的JDK的bin路径下放一个win32com.dll


 

在JDK的lib中放一个comm.jar和javax.comm.properties


 

需要的文件都在附件SMSCat.rar中。

 

 

OK,所有都准备完了,现在开始代码测试。

 

 

demo测试需要用到的jar


 

 

sms.properties#sms properties

Java代码   收藏代码
  1. Message.comId=modem.com19  
  2. Message.com=COM19  
  3. Message.baudRate=9600  
  4. Message.manufacturer=wavecom  
  5. Message.model=  
  6. Message.simPin=0000  
 

注意:这里的端口COM19必须和你上面的端口对应

 

SMSService.java

 

Java代码   收藏代码
  1. /** 
  2.  * Copyright(C) 2012 GZ ISCAS ALL Rights Reserved 
  3.  */  
  4. package com.royal.SMSCat;  
  5.   
  6. import java.util.Properties;  
  7.   
  8. import org.smslib.Message.MessageEncodings;  
  9. import org.smslib.OutboundMessage;  
  10. import org.smslib.Service;  
  11. import org.smslib.modem.SerialModemGateway;  
  12.   
  13. import com.royal.utils.PropertiesUtil;  
  14.   
  15. /** 
  16.  * 描述:SMS Cat服务类 
  17.  */  
  18. public class SMSService {  
  19.   
  20.     /** 
  21.      * 私有静态实例 
  22.      */  
  23.     private static SMSService instance = null;  
  24.   
  25.     /** 
  26.      * 是否开启服务 
  27.      */  
  28.     private boolean isStartService = false;  
  29.   
  30.     /** 
  31.      * 私有构造方法 
  32.      */  
  33.     private SMSService() {  
  34.     }  
  35.   
  36.     /** 
  37.      * 获取实例(单例模式) 
  38.      *  
  39.      * @return 
  40.      */  
  41.     public static SMSService getInstance() {  
  42.         if (instance == null) {  
  43.             instance = new SMSService();  
  44.         }  
  45.         return instance;  
  46.     }  
  47.   
  48.     /** 
  49.      * 开启短信服务 
  50.      *  
  51.      * @param path 
  52.      *            配置文件路径 
  53.      */  
  54.     public void startService(String path) {  
  55.         System.out.println("开始初始化SMS服务!");  
  56.   
  57.         // 加载文件属性  
  58.         Properties p = null;  
  59.         try {  
  60.             p = PropertiesUtil.getProperties(path);  
  61.         } catch (Exception e) {  
  62.             System.out.println("加载属性文件出错:" + e.getMessage());  
  63.             return;  
  64.         }  
  65.   
  66.         // 初始化网关,参数信息依次为:COMID,COM号,比特率,制造商,Modem模式  
  67.         SerialModemGateway gateway = new SerialModemGateway(p.getProperty("Message.comId"), p.getProperty("Message.com"), Integer.parseInt(p.getProperty("Message.baudRate")), p.getProperty("Message.manufacturer"), p.getProperty("Message.model"));  
  68.   
  69.         gateway.setInbound(true);  
  70.         gateway.setOutbound(true);  
  71.         gateway.setSimPin(p.getProperty("Message.simPin"));  
  72.   
  73.         OutboundNotification outboundNotification = new OutboundNotification();  
  74.   
  75.         Service service = Service.getInstance();  
  76.         if (service == null) {  
  77.             System.out.println("初始化SMS服务失败!");  
  78.             return;  
  79.         }  
  80.   
  81.         service.setOutboundMessageNotification(outboundNotification);  
  82.         try {  
  83.             service.addGateway(gateway);  
  84.             // 开启服务  
  85.             service.startService();  
  86.             System.out.println("初始化SMS服务成功!");  
  87.             isStartService = true;  
  88.         } catch (Exception e) {  
  89.             System.out.println("开启SMS服务异常:" + e.getMessage());  
  90.         }   
  91.     }  
  92.   
  93.     /** 
  94.      * 停止SMS服务 
  95.      */  
  96.     public void stopService() {  
  97.         try {  
  98.             Service.getInstance().stopService();  
  99.         } catch (Exception e) {  
  100.             System.out.println("关闭SMS服务异常:" + e.getMessage());  
  101.         }   
  102.         isStartService = false;  
  103.     }  
  104.   
  105.     /** 
  106.      * 发送短信 
  107.      *  
  108.      * @param toNumber 
  109.      *            手机号码 
  110.      * @param message 
  111.      *            短信内容 
  112.      */  
  113.     public void sendMessage(String toNumber, String message) {  
  114.         if (!isStartService) {  
  115.             System.out.println("尚未开启SMS服务!");  
  116.             return;  
  117.         }  
  118.   
  119.         // 封装信息  
  120.         OutboundMessage msg = new OutboundMessage(toNumber, message);  
  121.         msg.setEncoding(MessageEncodings.ENCUCS2);  
  122.         try {  
  123.             // 发送信息  
  124.             Service.getInstance().sendMessage(msg);  
  125.         } catch (Exception e) {  
  126.             System.out.println("SMS服务发送信息发生异常:" + e.getMessage());  
  127.             isStartService = false;  
  128.         }   
  129.     }  
  130.   
  131. }  
 

OutboundNotification.java

 

Java代码   收藏代码
  1. package com.royal.SMSCat;  
  2.   
  3. import org.smslib.AGateway;  
  4. import org.smslib.IOutboundMessageNotification;  
  5. import org.smslib.OutboundMessage;  
  6.   
  7. /** 
  8.  * 封装发送短信类 
  9.  */  
  10. public class OutboundNotification implements IOutboundMessageNotification {  
  11.       
  12.     public void process(AGateway gateway, OutboundMessage msg) {  
  13.         System.out.println("Outbound handler called from Gateway: " + gateway.getGatewayId());  
  14.     }  
  15. }  
 

SMSCatClient.java

 

Java代码   收藏代码
  1. package com.royal.SMSCat;  
  2.   
  3. public class SMSCatClient {  
  4.       
  5.     /** 
  6.      * 测试 
  7.      *  
  8.      * @param args 
  9.      */  
  10.     public static void main(String[] args) {  
  11.         String path = "D:\\sms.properties";  
  12.         SMSService.getInstance().startService(path);  
  13.         SMSService.getInstance().sendMessage("13800138000""测试 Test!");  
  14.         //没必要的时候没停止服务,因为端口占用着  
  15.         SMSService.getInstance().stopService();  
  16.     }  
  17.   
  18. }  
 

测试结果自己找个手机号测吧


看见了吗?控制台中的服务(红色标识)还在跑着,也就是端口还在占用着;服务没断,可以不用重新初始化。

 

 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SMS短信API 名 称:SMS API 版 本:V1.1(built 2004.02.29) 功 能:通过短信网关发送手机短信 作 者:Starboy (starboy@xdevelop.net) Longlybug (sales@xdevelop.net) 网 址:http://www.xdevelop.net 简介   SMS API(for java)是一个通过网关发送手机短信JAVA开发包,提供了方便的开发应用接口,JAVA开发者可利用它轻松的定制出各类短信应用平台,如:企业OA应用中的短信提醒、网站中的定单短信提醒、交友平台的手机短信互动等等。短信应用开发者无需再去关心网关协议,或者研究与手机间的通信指令等。使用本API,开发者无需关心其它细节,只需调用API,即可实现手机短信应用中最常用的短信发送功能。 功能特点 支持移动和联通手机,自动识别 SMS API实现了短信即时发送和定时发送。支持联通和移动手机,发送时无需关心目标手机运营商,自动识别移动和联通。整体成功率约90%左右。   发送性能优异稳定 API使用的网关服务器拥有多线程发送能力,每秒可同时处理数十个客户端的并发请求。   平台无关性 客户端适用于任何可运行JAVA的平台,包括:Windows、LINUX、UNIX、MAC等。 不像DLL接口,只能运行于WINDOWS平台。 对于WEB应用来说,本API可运行于任何J2EE规范的应用服务器。   接口简洁易用 短信API的接口非常简单,封装了与短信服务器网关的通讯,调用者无需关心底层通讯细节。   无硬件设备要求 只要能上INTERNET网即可使用本API发送短信,无需购买任何手机硬件、短信MODEM、短信卡、数据线等。   费用低廉,接入简单 只需缴纳一定量的接入费并签定短信内容保证书,即可立刻拥有自己的短信平台,每条短信的发送费用为0.1元,可根据需要随时充值。   适合用户 本平台适合那些对短信功能要求比较单一,以及每日发送量不大的各类应用。 安装部署   SMS API开发包由两个文件组成,一个是smsclient.jar:API程序文件,另一个是sms.ini:程序配置文件。   对于JAVA桌面应用程序,需将smsclient.jar加入classpath,并将sms.ini放于classpath所在的一个目录   对于JSP WEB应用程序,可将smsclient.jar放入对应WEB应用的WEB-INF/lib/目录下,并将sms.ini放于WEB-INF/classes/根目录下。   关于API的使用及sms.ini的配置,请参看doc目录下的API使用说明和API文档。   试用版的功能限制   试用版只能发5条短信! 购买联系   欢迎您注册本软件,请与双子星工作室的程先生联系:   EMAIL:sales@xdevelop.net   OICQ:33450   网址:http://www.xdevelop.net   TEL:13510015276   如果您有任何疑问,也请通过以上方式同我们联系,谢谢您的支持!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值