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

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 实现短信猫发短信代码

    下面是一个简化的步骤,演示如何使用Java实现短信猫发短信: 1. 加载comm.jar库,确保`javax.comm`包可用。 2. 加载javax.comm.properties配置文件,初始化串口参数。 3. 使用`CommPortIdentifier`获取到短信猫所...

    Java使用短信猫发送短信(AT指令操作串口)

    本教程将聚焦于如何利用Java结合短信猫(Modem)发送短信,这通常涉及到AT指令集的使用以及串行通信。短信猫是一种硬件设备,能够通过SIM卡连接到移动网络,从而实现短信收发功能。在Java中,我们通常会借助特定的库...

    飞信SMS免费发手机短信

    首先,飞信SMS的API接口通常适用于PHP和ASP编程语言,这意味着开发者可以编写脚本或程序,通过调用这些接口来自动化短信发送过程。对于PHP,开发者可以使用cURL库或者file_get_contents函数发起HTTP请求到飞信的...

    腾讯云sms短信服务sdk含核心jar包:qcloudsms-1.0.5.jar

    如果你在使用过程中遇到问题,可以在博主的博客中搜索“腾讯云sms短信服务”相关的教程,获取更详细的步骤和常见问题解答。 通过以上介绍,你应该对如何使用腾讯云SMS SDK有了基本了解。结合`qcloudsms_java-master...

    java-sms-1.1.rar_DEMO_短信

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

    java发送短信之AT指令

    /**短信接收发*/ private String recver;//短信接收发 /**时间*/ private Date date; public String getSmstext() { return smstext; } public void setSmstext(String smstext) { this.smstext = smstext...

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

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

    java 控制GSM模块发短信 打电话

    本文将详细介绍如何使用Java语言通过串行接口(通常称为“串口”)来控制GSM模块完成发送短信、拨打电话及删除短信等操作。 #### 一、基础知识简介 **GSM模块**:GSM(Global System for Mobile communication)是一...

    易语言JAVA调用 例子

    3. **调用Java方法**:使用`CallStaticVoidMethod`或`CallVoidMethod`等函数,根据方法是否为静态,以及传入的参数类型,调用Java方法。 4. **处理结果**:根据Java方法的返回值,易语言程序可以进行相应的操作。 ...

    java调用C++ webservice

    本话题主要探讨如何使用Java调用由C++实现的Web服务(Webservice)。在给出的描述中,提到了通过WSDL(Web Services Description Language)文件来实现这一目标。以下是关于这个主题的详细知识点: 1. **Web服务...

    Java调用OCR进行图片识别

    Java调用OCR进行图片识别是指使用Java语言通过Tesseract-OCR对图片进行识别的技术。下面是相关知识点的详细解释: 一、Tesseract-OCR简介 Tesseract-OCR是一个开源的OCR(Optical Character Recognition,光学字符...

    Java 调用短信API接口

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

    java调用c语言

    ### Java调用C语言知识点详解 #### 一、概述 在跨语言编程中,Java调用C语言是一种常见的场景,特别是在需要与操作系统底层交互或利用已有C语言库的情况下。Java Native Interface (JNI) 是实现这一功能的核心技术...

    groovy和Java相互调用1

    描述中提到的Groovy调用Java的过程是“无缝”的,这意味着Groovy对Java API的集成非常紧密,使得开发者可以自然地在Groovy中使用Java的功能。 Java调用Groovy类则稍微复杂一些,通常有两种主要方法: 1. **方法1:...

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

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

    Delphi SMS短信收发例子

    Delphi SMS短信收发例子是针对使用Delphi编程语言实现短信功能的一个实例教程,对于初学者来说具有很好的学习价值。这个实例涵盖了从短信协议理解到实际编程应用的多个环节,让我们来深入探讨一下其中涉及的知识点。...

    java调用ocx控件,jacob,jar和dll文件

    Java调用OCX控件是跨平台编程中的一项技术挑战,因为OCX(Object Linking and Embedding Control)是微软Windows环境下的...在实际操作时,需要仔细处理好jar和dll文件的配置,确保Java能够正确地调用和使用COM组件。

    Java调用有道翻译

    在IT行业中,调用外部服务来增强应用功能是一种常见的做法,比如使用有道翻译API来实现文本翻译。本文将详细讲解如何在Java环境下调用有道翻译API,以实现高效、便捷的多语言翻译功能。 首先,有道翻译API提供了一...

    sms短信平台源码(webForm)

    适用于大中小型企业、商场、酒店...主要提供短信网关,短信接口, 网站接口以及 OA 、 CRM 、 ERP 、 SCM 、等系统及B2B大型网站平台使用。 接入方式可灵活使用,24小时发送,多条通道备用。保证客户短信的下发速度和质量

    java调用activex控件

    通过上述分析,我们可以看出,Java调用ActiveX控件的过程涉及到了多层面的技术融合,包括Java的图形用户界面编程、JNI机制、C/C++编程、Windows API以及ActiveX控件的使用。虽然这一过程相对复杂,但对于需要在Java...

Global site tag (gtag.js) - Google Analytics