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

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卡连接到移动通信网络,用于收发短信...

    华为短信api的java源码

    华为短信API的Java源码是用于与华为短信服务进行交互的一种开发工具,它允许开发者通过编程方式发送、接收和管理短信。...同时,对于需要扩展或定制短信服务的场景,直接使用源码比调用封装好的库更灵活。

    SMS4J为短信聚合框架,帮您轻松集成多家短信服务,解决接入多个短信SDK的繁琐流程

    4. **调用API**:在需要发送短信的地方,调用SMS4J的发送短信方法,传入必要参数,如接收号码、短信内容等。 5. **处理响应**:发送后,框架会返回发送结果,根据结果进行后续处理。 ### 三、示例代码 ```java //...

    java短信猫收发短信的例子

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

    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接口,开发者可以发送...

    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为依赖。 ...

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

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

    免费发短信的工具 freesms

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

    java-sms-1.1.rar_DEMO_短信

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

    Java源码sms.Jar

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

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

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

    基于java的开发源码-smpp协议的点对点短信发送源码包.zip

    基于java的开发源码-smpp协议的点对点短信发送源码包.zip 基于java的开发源码-smpp协议的点对点短信发送源码包.zip 基于java的开发源码-smpp协议的点对点短信发送源码包.zip 基于java的开发源码-smpp协议的点对点...

    Java调用Qt DLL

    Java调用Qt DLL是一个跨平台的技术实践,涉及到Java与C++之间的互操作性,其中Qt是一个流行的C++库,主要用于图形用户界面开发。这个主题主要包含以下几个知识点: 1. **JNI(Java Native Interface)**:JNI是Java...

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

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

    易语言JAVA调用 例子

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

    java调用soap接口案例

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

Global site tag (gtag.js) - Google Analytics