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

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+Demo对接中国移动 云MAS短信发送-Jar

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

    java短信猫收发短信的例子

    Java短信猫收发短信的例子是基于Java编程语言实现的一个实用工具,主要用于与短信猫设备进行交互,实现短信的发送和接收功能。短信猫是一种硬件设备,通常通过USB或串口连接到计算机,使得电脑能够通过GSM网络发送和...

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

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

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

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

    华为短信api的java源码

    华为短信API的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为依赖。 ...

    联通短信网关JAVA接口

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

    免费发短信的工具 freesms

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

    Java 调用wsdl例子

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

    Java源码sms.Jar

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

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

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

    java实现联通SGIP短信接口

    java实现联通SGIP短信接口

    java调用comfyui接口

    Java作为一种广泛使用的编程语言,在与其他系统的交互中扮演着重要角色。特别是对于图形用户界面设计而言,调用特定的接口可以极大地提高开发效率和用户体验。在本次讨论中,我们将深入探讨如何在Java环境下调用名为...

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

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

    SMS短信平台代码

    【SMS短信平台代码】是一个基于JAVA语言开发的短信发送系统,它提供了发送短信、接收短信以及可能的管理功能。此平台对于需要批量发送验证码、通知或者进行其他短信交互的业务非常有用。源代码的开放性使得开发者...

    java调用soap接口案例

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

Global site tag (gtag.js) - Google Analytics