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

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
分享到:
评论

相关推荐

    Java通过SMS短信平台实现发短信功能

    ### Java通过SMS短信平台实现发短信功能 #### 概述 本文主要介绍如何利用Java语言结合第三方短信服务平台——中国网建提供的SMS短信平台,来实现发送短信的功能。此方法不仅适用于初学者,对于有一定开发经验的...

    sms.rar_jsp sms_sms java_sms jsp_短信猫

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

    sms.rar_SMS HTTP java_sms_sms http

    标题中的“sms.rar_SMS HTTP java_sms_sms http”表明这是一个与通过HTTP协议发送SMS短信相关的Java项目,其中可能包含了实现此功能的源代码。描述中的重复短语“sms sending http sms sending http”进一步强调了这...

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

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

    java发送邮件和发送短信代码

    以上就是使用Java发送邮件和短信的基本步骤。在实际应用中,还需要考虑异常处理、日志记录、性能优化等多方面因素,以确保可靠性和安全性。通过阅读提供的`java短信发送`和`java发送邮件`的文件,你可以找到更具体的...

    Java短信收发;SMSLIB使用;java接收短信;java发送短信

    使用这个`SmsManager`,开发人员只需调用`SmsManager.getInstance().sendMessage()`即可完成短信发送,而无需关心底层的实现细节。 总结来说,Java短信收发利用SMSLIB库能大大简化开发过程。通过理解和封装SMSLIB,...

    HTTPSMS_Java.zip_java http sms_web sms

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

    基于smpp协议的Java点对点短信发送源码包.7z

    在这个基于SMPP协议的Java点对点短信发送源码包中,我们可以深入理解如何使用Java语言来构建一个能够发送短信的应用。 首先,我们需要了解SMPP协议的基本概念。SMPP是一种面向连接、基于TCP/IP的协议,它定义了短信...

    用java实现的短信发送

    Java 实现短信发送 Java 实现短信发送是指利用 Java 语言编写程序来实现服务器向手机发送短信的过程。...这个例子展示了如何使用 Java 语言来实现短信发送。我们可以使用这个例子作为参考,然后根据需要修改和扩展。

    联通短信网关JAVA接口

    【联通短信网关JAVA接口】是通信行业中一种重要的技术实现,它主要用于企业或服务提供商与运营商之间进行短信发送和接收的交互。JAVA接口是开发者利用Java编程语言与短信网关进行通讯的工具,使得应用程序能够方便地...

    免费发短信的工具 freesms

    1. **网络短信服务**:免费发短信的工具通常基于Web SMS技术,允许用户通过互联网发送短信,而不是通过手机网络。这种服务可能需要用户注册账户,并且往往有每天或每月的发送额度限制。 2. **代理服务器**:描述中...

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

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

    Java 调用wsdl例子

    Java 调用 WSDL 例子是指使用 Java 语言来调用远程的 Web 服务,该 Web 服务是通过 WSDL 文件发布的。在 WSDL 文件中,包含了该 Web 服务暴露在外面的接口信息。 WSDL 文件是 Web 服务描述语言的缩写,用于描述 Web...

    Java源码sms.Jar

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

    使用java调用jenkins api

    以下是一些关于如何使用Java调用Jenkins API的重要知识点: 1. **Jenkins REST API**: Jenkins主要通过RESTful API提供服务,这些API以JSON或XML格式返回数据。开发者可以使用HTTP请求(GET、POST、PUT、DELETE等...

    java实现联通SGIP短信接口

    java实现联通SGIP短信接口

    Sms.zip_android sms_android 短信_sms_安卓_安卓短信拦截

    首先,确定目标电话号码,然后调用这个方法,传入目标号码、短信内容以及回调接口,以确保短信发送成功。 5. **权限管理**:在Android 6.0及以上版本,运行时权限管理机制要求用户在安装应用后还需要在运行时给予`...

    java调用json参数的webservice

    为了使得Java客户端能够调用WebService服务,需要使用一些工具,例如JAX-WS(Java API for XML Web Services),它是Java SE的一部分,用于创建WebService客户端和服务端。 综上所述,通过Java调用带有JSON参数的...

    java调用C#封装的dll方法

    其中一种方案是使用Java Native Access (JNA) 来调用通过C++封装的C# DLL文件。 **步骤详解:** **1. 创建C# COM组件:** - **新建项目:** 在Visual Studio中创建一个新的类库项目,并命名为`COMTest`。 - **...

    java调用soap接口案例

    通过以上知识点的学习和实践,你可以掌握如何使用Java调用SOAP接口,以及如何根据具体需求进行定制。在处理天气信息这样的案例中,理解SOAP协议和相关API的使用,将使你能够轻松地与各种Web服务进行交互。

Global site tag (gtag.js) - Google Analytics