`
萧_瑟
  • 浏览: 160627 次
社区版块
存档分类
最新评论

Java调用 SMS Cat发短信

    博客分类:
  • java
阅读更多

居然不能发表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

Message.comId=modem.com19
Message.com=COM19
Message.baudRate=9600
Message.manufacturer=wavecom
Message.model=
Message.simPin=0000
 

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

 

SMSService.java

 

/**
 * Copyright(C) 2012 GZ ISCAS ALL Rights Reserved
 */
package com.royal.SMSCat;

import java.util.Properties;

import org.smslib.Message.MessageEncodings;
import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.modem.SerialModemGateway;

import com.royal.utils.PropertiesUtil;

/**
 * 描述:SMS Cat服务类
 */
public class SMSService {

	/**
	 * 私有静态实例
	 */
	private static SMSService instance = null;

	/**
	 * 是否开启服务
	 */
	private boolean isStartService = false;

	/**
	 * 私有构造方法
	 */
	private SMSService() {
	}

	/**
	 * 获取实例(单例模式)
	 * 
	 * @return
	 */
	public static SMSService getInstance() {
		if (instance == null) {
			instance = new SMSService();
		}
		return instance;
	}

	/**
	 * 开启短信服务
	 * 
	 * @param path
	 *            配置文件路径
	 */
	public void startService(String path) {
		System.out.println("开始初始化SMS服务!");

		// 加载文件属性
		Properties p = null;
		try {
			p = PropertiesUtil.getProperties(path);
		} catch (Exception e) {
			System.out.println("加载属性文件出错:" + e.getMessage());
			return;
		}

		// 初始化网关,参数信息依次为:COMID,COM号,比特率,制造商,Modem模式
		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"));

		gateway.setInbound(true);
		gateway.setOutbound(true);
		gateway.setSimPin(p.getProperty("Message.simPin"));

		OutboundNotification outboundNotification = new OutboundNotification();

		Service service = Service.getInstance();
		if (service == null) {
			System.out.println("初始化SMS服务失败!");
			return;
		}

		service.setOutboundMessageNotification(outboundNotification);
		try {
			service.addGateway(gateway);
			// 开启服务
			service.startService();
			System.out.println("初始化SMS服务成功!");
			isStartService = true;
		} catch (Exception e) {
			System.out.println("开启SMS服务异常:" + e.getMessage());
		} 
	}

	/**
	 * 停止SMS服务
	 */
	public void stopService() {
		try {
			Service.getInstance().stopService();
		} catch (Exception e) {
			System.out.println("关闭SMS服务异常:" + e.getMessage());
		} 
		isStartService = false;
	}

	/**
	 * 发送短信
	 * 
	 * @param toNumber
	 *            手机号码
	 * @param message
	 *            短信内容
	 */
	public void sendMessage(String toNumber, String message) {
		if (!isStartService) {
			System.out.println("尚未开启SMS服务!");
			return;
		}

		// 封装信息
		OutboundMessage msg = new OutboundMessage(toNumber, message);
		msg.setEncoding(MessageEncodings.ENCUCS2);
		try {
			// 发送信息
			Service.getInstance().sendMessage(msg);
		} catch (Exception e) {
			System.out.println("SMS服务发送信息发生异常:" + e.getMessage());
			isStartService = false;
		} 
	}

}
 

OutboundNotification.java

 

package com.royal.SMSCat;

import org.smslib.AGateway;
import org.smslib.IOutboundMessageNotification;
import org.smslib.OutboundMessage;

/**
 * 封装发送短信类
 */
public class OutboundNotification implements IOutboundMessageNotification {
	
	public void process(AGateway gateway, OutboundMessage msg) {
		System.out.println("Outbound handler called from Gateway: " + gateway.getGatewayId());
	}
}
 

SMSCatClient.java

 

package com.royal.SMSCat;

public class SMSCatClient {
	
	/**
	 * 测试
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		String path = "D:\\sms.properties";
		SMSService.getInstance().startService(path);
		SMSService.getInstance().sendMessage("13800138000", "测试 Test!");
		//没必要的时候没停止服务,因为端口占用着
		SMSService.getInstance().stopService();
	}

}
 

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


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

 

  • 大小: 1 MB
  • 大小: 14.4 KB
  • 大小: 6.7 KB
  • 大小: 53.8 KB
  • 大小: 17.1 KB
  • 大小: 16.7 KB
  • 大小: 64.4 KB
  • 大小: 14.6 KB
分享到:
评论

相关推荐

    sms.rar_jsp sms_sms java_sms jsp_短信猫

    "jsp_sms"、"sms_java"和"sms_jsp"标签揭示了该系统是用Java语言编写,并且在服务器端使用JSP(JavaServer Pages)技术进行展示和交互。"短信猫"则指的是硬件设备,它能够通过SIM卡连接到移动通信网络,用于收发短信...

    Java+Demo对接中国移动 云MAS短信发送-Jar

    Java+Demo对接中国移动云MAS短信发送-Jar是一个关于使用Java编程语言与中国移动的云MAS(Mobile Application Server)服务进行集成,实现短信发送功能的技术实践。中国移动的云MAS平台为企业提供了强大的短信服务...

    java 调用运营商短信方法(一)

    这篇博文“java 调用运营商短信方法(一)”可能介绍了如何使用Java来构建这样的功能。下面将详细讨论相关知识点。 1. **SMS Gateway Interactions**: - **HTTP/HTTPS**:通过HTTP或HTTPS接口,开发者可以发送...

    HTTPSMS_Java.zip_java http sms_web sms

    开发者可以通过在Java程序中引入这个Jar文件,调用其中的方法来发送短信。 5. **Web应用程序集成**:将HTTP SMS功能集成到Web应用中,通常涉及以下几个步骤: - 引入Jar包:在项目中添加HTTPSMS-Java.jar为依赖。 ...

    java-sms-1.1.rar_DEMO_短信

    【标题】"java-sms-1.1.rar_DEMO_短信"揭示了这是一个与Java编程相关的短信服务项目,版本为1.1。这个压缩包很可能包含了一个用于发送和/或接收短信的DEMO应用程序,旨在帮助开发者理解如何在Java环境中实现短信功能...

    cmpp2.0短信网关发送短信代码(java)

    CMPP2.0短信网关发送短信代码是Java开发者用于与中国移动通信集团的短信服务进行交互的一种技术实现。CMPP(China Mobile Short Message Peer-to-Peer)2.0协议是移动运营商提供的一种通信协议,主要用于短信业务的...

    net,java,vb,短信猫开发包,短信通,安装说明,usb驱动等sms

    标题中的“net,java,vb,短信猫开发包,短信通,安装说明,usb驱动等sms”表明这是一个关于使用.NET、Java和VB(Visual Basic)编程语言进行短信猫(Modem)开发的资源集合,其中包含了短信通服务的使用、安装指南...

    Java源码sms.Jar

    封装好的SMS功能,有源码,并有例子,做项目时,可以下载即可使用

    java实现的阿里云短信服务发送短信功能

    我们使用的是单条发送短信服务,特殊情况下也对群发小支持一下。(最多1000个手机号码发送同样的内容),而且群反会有延迟。 如果需要在一次请求中分别向多个不同的手机号发送不同签名和模板内容短信,使用他的另一...

    SMS.rar_sms_sms gateway_短信网关_网关短信

    2. **sms_gateway**:即短信网关,它是连接企业和移动运营商之间的桥梁,使得应用程序可以通过API调用来发送和接收短信。 3. **短信网关**:是实现短信服务的关键组件,它处理短信的传输、路由、编码解码等工作,...

    sms工具类调用阿里云短信服务

    在Java开发中,我们可以创建一个`sms工具类`来封装这些调用逻辑,从而简化业务代码,提高代码的可复用性和可维护性。本文将详细讲解如何构建这样的工具类,并分享相关的知识点。 1. **阿里云SDK引入** 在Java项目...

    Java 调用短信API接口

    摩杜云短信业务接入,该平台支持国内和国际快速发送验证码、短信通知和推广短信,服务范围覆盖全球200多个国家和地区。国内短信支持三网合一专属通道,与工信部携号转网平台实时互联。电信级运维保障,实时监控自动...

    短信猫java,java集成短信接口

    标题中的“短信猫java,java集成短信接口”指的是在Java应用程序中使用短信猫设备来实现短信的发送功能。短信猫是一种硬件设备,它通过串行接口(如USB或COM口)连接到计算机,使得计算机可以通过AT命令控制进行短信...

    GMSSL的java调用(JNI库和调用实例).zip

    - **Java调用示例**:这些示例代码展示了如何在Java中加载和使用JNI库,调用GMSSL的加密、解密、签名和验证等功能。开发者可以通过阅读和运行这些示例来了解如何在自己的项目中集成GMSSL。 集成过程通常包括以下...

    sms.rar_C# 短信_c# 发短信_sms.dll

    标签“c#_短信 c#_发短信 sms.dll”进一步确认了这个库的主要功能,即C#中的短信发送,以及使用的库文件是“sms.dll”。 根据压缩包内的文件名列表,我们可以推测这是一个基于ASP.NET的Web应用程序项目,包含以下...

    windows 下java调用winrar压缩文件为rar 格式

    在Windows环境下,使用Java进行程序开发时,有时我们需要对文件进行压缩操作,比如将文件压缩成RAR格式。这个过程涉及到Java的本地方法调用、文件I/O操作以及第三方库的集成。下面我们将详细探讨如何在Java中实现这...

    【精品】java调用短信外网接口服务端和客户端代码

    本资源“【精品】java调用短信外网接口服务端和客户端代码”提供了完整的Java实现,帮助开发者快速理解和集成短信发送功能。这个压缩包包含了源码和接口文档,使得对Java有一定了解的开发者能够迅速上手。 首先,...

    java阿里短信验证码

    在Java代码中,你需要创建一个`DefaultAcsClient`实例,然后调用` DysmsapiClient`的`sendSms`方法来发送短信验证码。以下是一个简单的示例: ```java import com.aliyuncs.DefaultAcsClient; import ...

Global site tag (gtag.js) - Google Analytics