日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java 短信猫发送短信的方法

發(fā)布時(shí)間:2024/4/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 短信猫发送短信的方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://zghbwjl.blog.163.com/blog/static/12033667220129175158806/

http://www.smscom.cn/sms_javasoft/

用java實(shí)現(xiàn)短信收發(fā)的功能,目前一般項(xiàng)目中短信群發(fā)功能的實(shí)現(xiàn)方法大致有下面三種:

·?????????????????1、 向運(yùn)行商申請(qǐng)短信網(wǎng)關(guān),不需要額外的設(shè)備,利用運(yùn)行商提供的API調(diào)用程序發(fā)送短信,適用于大型的通信公司。

·?????????????????2、 借助像GSM MODEM之類的設(shè)備(支持AT指令的手機(jī)也行),通過(guò)數(shù)據(jù)線連接電腦來(lái)發(fā)送短信,這種方法比較適用于小公司及個(gè)人。要實(shí)現(xiàn)這種方式必須理解串口通信、AT指令、短信編碼、解碼。

·?????????????????3、 借助第三方運(yùn)行的網(wǎng)站實(shí)現(xiàn),由網(wǎng)站代發(fā)短信數(shù)據(jù),這種方法對(duì)網(wǎng)站依賴性太高,對(duì)網(wǎng)絡(luò)的要求也比較高。


???????鑒于項(xiàng)目的情況和多方考慮,同時(shí)又找到了一個(gè)開(kāi)源的SMSLib項(xiàng)目的支持,比較傾向于第二種方法,SMSLib的出現(xiàn)就不需要我們自己去寫(xiě)底層的AT指令,這樣就可以直接通過(guò)調(diào)用SMSLib的API來(lái)實(shí)現(xiàn)通過(guò)GSM modem來(lái)收發(fā)送短信了。

SMSLib官方網(wǎng)站:http://smslib.org/,使用SMSLib的一些基本要點(diǎn):

·?????????????????SUN JDK 1.6 or newer. (Java環(huán)境)

·?????????????????Java CommunicationsLibrary. (Java串口通信)

·?????????????????Apache ANT for building thesources. (編譯源碼時(shí)需要的)

·?????????????????Apache log4j. (日志工具)

·?????????????????Apache Jakarta Commons -NET. (網(wǎng)絡(luò)操作相關(guān)的)

·?????????????????JSMPP Library (SMPP協(xié)議時(shí)需要的)


有關(guān)Java串口通信需要補(bǔ)充說(shuō)明:

·?????????????????window系統(tǒng)可以用SUN Java Comm v2. (該版本好像也支持solaris)

其下載地址:http://smslib.googlecode.com/files/javacomm20-win32.zip

·?????????????????其他操作系統(tǒng)(比如:Linux, Unix, BSD,等等),你可以選擇 Java Comm v3 或者是RxTx。

Java Comm v3下載地址:http://java.sun.com/products/javacomm/(需要注冊(cè));?
???????? RxTx官網(wǎng):http://users.frii.com/jarvi/rxtx/index.html?or?http://rxtx.qbang.org/wiki/index.php/Main_Page


附件提供相關(guān)下載:

·?????????????????java串口通信v2:javacomm20-win32.zip

·?????????????????smslib-3.5.1.jar

·?????????????????短信modem驅(qū)動(dòng):PL2303_Prolific_DriverInstaller_v130.zip


本次測(cè)試的環(huán)境是window,GSM modem是wavecom,所以這次主要描述window環(huán)境下簡(jiǎn)單的實(shí)現(xiàn)過(guò)程:?
【一】、配置相應(yīng)的環(huán)境?
?????首先解壓下載的Java Comm v2文件javacomm20-win32.zip,具體配置步驟如下:

·?????????????????把文件:comm.jarcopy 到目錄:JDKDIR/jre/lib/ext/,當(dāng)然這一步也可以不要這樣做,你只需把comm.jar copy到所要運(yùn)行的項(xiàng)目對(duì)應(yīng)的lib/下既可

·?????????????????把文件:javax.comm.propertiescopy 到目錄:JDKDIR/jre/lib/

·?????????????????把DLL文件:win32com.dll(windows) copy 到目錄:JDKDIR/jre/bin/

如果存在JRE目錄, 最好安裝上面步驟把文件copy到JREDIR相應(yīng)的目錄下

測(cè)試串口端口程序:?
Test?.java

Java代碼??

package test;


import java.util.Enumeration;


import javax.comm.CommDriver;

import javax.comm.CommPortIdentifier;

import javax.comm.SerialPort;


public class Test {


?? public static void main(String[] args) throws Exception { ?

?? ? ? ?// 人工加載驅(qū)動(dòng) ?

?? ? ? ?// MainTest.driverInit(); ?

?? Test.getCommPortList(); ?

?? ? ? ?// 人工加載驅(qū)動(dòng)獲取端口列表 ?

?? ? ? ?// TestGetPortList.getPortByDriver(); ?

??

?? ?} ?

??

?? ?/**?

?? ? * 手工加載驅(qū)動(dòng)<br>?

?? ? * 正常情況下程序會(huì)自動(dòng)加載驅(qū)動(dòng),故通常不需要人工加載<br>?

?? ? * 每重復(fù)加載一次,會(huì)把端口重復(fù)注冊(cè),CommPortIdentifier.getPortIdentifiers()獲取的端口就會(huì)重復(fù)?

?? ? */ ?

?? ?public static void driverManualInit() { ?

?? ? ? ?String driverName = "com.sun.comm.Win32Driver"; ?

?? ? ? ?String libname = "win32com"; ?

?? ? ? ?CommDriver commDriver = null; ?

?? ? ? ?try { ?

?? ? ? ? ? ?System.loadLibrary("win32com"); ?

?? ? ? ? ? ?System.out.println(libname + " Library Loaded"); ?

??

?? ? ? ? ? ?commDriver = (javax.comm.CommDriver) Class.forName(driverName) ?

?? ? ? ? ? ? ? ? ? ?.newInstance(); ?

?? ? ? ? ? ?commDriver.initialize(); ?

?? ? ? ? ? ?System.out.println("comm Driver Initialized"); ?

??

?? ? ? ?} catch (Exception e) { ?

?? ? ? ? ? ?System.err.println(e); ?

?? ? ? ?} ?

?? ?} ?

??

?? ?/**?

?? ? * 獲取端口列表?

?? ? */ ?

?? ?public static void getCommPortList() { ?

?? ? ? ?CommPortIdentifier portId; ?

?? ? ? ?Enumeration portEnum = CommPortIdentifier.getPortIdentifiers(); ?

?? ? ? ?while (portEnum.hasMoreElements()) { ?

?? ? ? ? ? ?portId = (CommPortIdentifier) portEnum.nextElement(); ?

??

?? ? ? ? ? ?if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { ?

?? ? ? ? ? ? ? ?System.out.println("串口: name-" + portId.getName() ?

?? ? ? ? ? ? ? ? ? ? ? ?+ " 是否占用-" + portId.isCurrentlyOwned()); ?

?? ? ? ? ? ?} else { ?

?? ? ? ? ? ? ? ?System.out.println("并口: name-" + portId.getName() ?

?? ? ? ? ? ? ? ? ? ? ? ?+ " 是否占用-" + portId.isCurrentlyOwned()); ?

?? ? ? ? ? ?} ?

?? ? ? ?} ?

?? ? ? ?System.out.println("-------------------------------------"); ?

?? ?} ?

??

?? ?/**?

?? ? * ?

?? ? */ ?

?? ?public static void getPortByDriver() { ?

??

?? ? ? ?String driverName = "com.sun.comm.Win32Driver"; ?

?? ? ? ?String libname = "win32com"; ?

?? ? ? ?CommDriver commDriver = null; ?

?? ? ? ?try { ?

?? ? ? ? ? ?System.loadLibrary("win32com"); ?

?? ? ? ? ? ?System.out.println(libname + " Library Loaded"); ?

??

?? ? ? ? ? ?commDriver = (CommDriver) Class.forName(driverName).newInstance(); ?

?? ? ? ? ? ?commDriver.initialize(); ?

?? ? ? ? ? ?System.out.println("comm Driver Initialized"); ?

??

?? ? ? ?} catch (Exception e) { ?

?? ? ? ? ? ?System.err.println(e); ?

?? ? ? ?} ?

?? ? ? ?SerialPort sPort = null; ?

?? ? ? ?try { ?

??

?? ? ? ? ? ?sPort = (SerialPort) commDriver.getCommPort("COM24", ?

?? ? ? ? ? ? ? ? ? ?CommPortIdentifier.PORT_SERIAL); ?

?? ? ? ? ? ?System.out.println("find CommPort:" + sPort.toString()); ?

?? ? ? ?} catch (Exception e) { ?

?? ? ? ? ? ?System.out.println(e.getMessage()); ?

?? ? ? ?} ?

??

?? ?} ?

??

}



本機(jī)運(yùn)行結(jié)果:

引用


串口: name-COM10 是否占用-false?
串口: name-COM21 是否占用-false?
串口: name-COM23 是否占用-false?
串口: name-COM20 是否占用-false?
串口: name-COM22 是否占用-false?
串口: name-COM24 是否占用-false?
串口: name-COM9 是否占用-false?
串口: name-COM19 是否占用-false?
串口: name-COM3 是否占用-false?
串口: name-COM8 是否占用-false?
串口: name-COM98 是否占用-false?
串口: name-COM99 是否占用-false?
串口: name-COM4 是否占用-false?
串口: name-COM5 是否占用-false?
串口: name-COM6 是否占用-false?
并口: name-LPT1 是否占用-false?
并口: name-LPT2 是否占用-false?
-------------------------------------


【三】、檢查串口設(shè)備信息:?
TestCommPort?.java

Java代碼??

package test;


import java.io.InputStream;

import java.io.OutputStream;

import java.util.Enumeration;


import javax.comm.CommPortIdentifier;

import javax.comm.SerialPort;


public class TestCommPort {

??

? ? static CommPortIdentifier portId; ?

? ? static Enumeration portList; ?

? ? static int bauds[] = { 9600, 19200, 57600, 115200 }; ?

??

? ? /**?

? ? ?* @param args?

? ? ?*/ ?

? ? public static void main(String[] args) { ?

? ? ? ? portList = CommPortIdentifier.getPortIdentifiers(); ?

? ? ? ? System.out.println("GSM Modem 串行端口連接測(cè)試開(kāi)始..."); ?

? ? ? ? String portName = "COM4"; ?

? ? ? ? while (portList.hasMoreElements()) { ?

? ? ? ? ? ? portId = (CommPortIdentifier) portList.nextElement(); ?

? ? ? ? ? ? if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL ?

? ? ? ? ? ? ? ? ? ? && portName.equals(portId.getName())) { ?

? ? ? ? ? ? ? ? System.out.println("找到串口: " + portId.getName()); ?

? ? ? ? ? ? ? ? for (int i = 0; i < bauds.length; i++) { ?

? ? ? ? ? ? ? ? ? ? System.out.print(" ?Trying at " + bauds[i] + "..."); ?

? ? ? ? ? ? ? ? ? ? try { ?

? ? ? ? ? ? ? ? ? ? ? ? SerialPort serialPort; ?

? ? ? ? ? ? ? ? ? ? ? ? InputStream inStream; ?

? ? ? ? ? ? ? ? ? ? ? ? OutputStream outStream; ?

? ? ? ? ? ? ? ? ? ? ? ? int c; ?

? ? ? ? ? ? ? ? ? ? ? ? StringBuffer response = new StringBuffer(); ?

? ? ? ? ? ? ? ? ? ? ? ? serialPort = (SerialPort) portId.open( ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "SMSLibCommTester", 1971); ?

? ? ? ? ? ? ? ? ? ? ? ? serialPort ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN); ?

? ? ? ? ? ? ? ? ? ? ? ? serialPort.setSerialPortParams(bauds[i], ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SerialPort.DATABITS_8, SerialPort.STOPBITS_1, ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SerialPort.PARITY_NONE); ?

? ? ? ? ? ? ? ? ? ? ? ? inStream = serialPort.getInputStream(); ?

? ? ? ? ? ? ? ? ? ? ? ? outStream = serialPort.getOutputStream(); ?

? ? ? ? ? ? ? ? ? ? ? ? serialPort.enableReceiveTimeout(1000); ?

? ? ? ? ? ? ? ? ? ? ? ? c = inStream.read(); ?

? ? ? ? ? ? ? ? ? ? ? ? while (c != -1) { ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? c = inStream.read(); ?

? ? ? ? ? ? ? ? ? ? ? ? } ?

? ? ? ? ? ? ? ? ? ? ? ? outStream.write('A'); ?

? ? ? ? ? ? ? ? ? ? ? ? outStream.write('T'); ?

? ? ? ? ? ? ? ? ? ? ? ? outStream.write('\r'); ?

? ? ? ? ? ? ? ? ? ? ? ? try { ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? Thread.sleep(1000); ?

? ? ? ? ? ? ? ? ? ? ? ? } catch (Exception e) { ?

? ? ? ? ? ? ? ? ? ? ? ? } ?

? ? ? ? ? ? ? ? ? ? ? ? c = inStream.read(); ?

? ? ? ? ? ? ? ? ? ? ? ? while (c != -1) { ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? response.append((char) c); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? c = inStream.read(); ?

? ? ? ? ? ? ? ? ? ? ? ? } ?

? ? ? ? ? ? ? ? ? ? ? ? if (response.indexOf("OK") >= 0) { ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.print(" ?正在檢測(cè)設(shè)備:"); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? try { ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? outStream.write('A'); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? outStream.write('T'); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? outStream.write('+'); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? outStream.write('C'); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? outStream.write('G'); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? outStream.write('M'); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? outStream.write('M'); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? outStream.write('\r'); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? response = new StringBuffer(); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? c = inStream.read(); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? while (c != -1) { ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? response.append((char) c); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? c = inStream.read(); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println(" ?發(fā)現(xiàn)設(shè)備: " ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + response.toString().replaceAll( ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "(\\s+OK\\s+)|[\n\r]", "")); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? } catch (Exception e) { ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println(" ?檢測(cè)設(shè)備失敗,獲取設(shè)備信息異常:" ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + e.getMessage()); ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? } ?

? ? ? ? ? ? ? ? ? ? ? ? } else { ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println(" ?檢測(cè)設(shè)備失敗,沒(méi)有接收到響應(yīng)結(jié)果!"); ?

? ? ? ? ? ? ? ? ? ? ? ? } ?

? ? ? ? ? ? ? ? ? ? ? ? serialPort.close(); ?

? ? ? ? ? ? ? ? ? ? } catch (Exception e) { ?

? ? ? ? ? ? ? ? ? ? ? ? System.out.println(" ?檢測(cè)設(shè)備失敗,發(fā)生異常:" + e.getMessage()); ?

? ? ? ? ? ? ? ? ? ? } ?

? ? ? ? ? ? ? ? } ?

? ? ? ? ? ? } ?

? ? ? ? } ?

? ? } ?

} ?



運(yùn)行結(jié)果如下:

引用


GSM Modem 串行端口連接測(cè)試開(kāi)始...?
找到串口: COM24?
? Trying at 9600...? 正在檢測(cè)設(shè)備:?發(fā)現(xiàn)設(shè)備: AT+CGMM MULTIBAND? 900E?1800?
? Trying at 19200...? 發(fā)現(xiàn)設(shè)備失敗,沒(méi)有接收到響應(yīng)結(jié)果!?
? Trying at 57600...? 發(fā)現(xiàn)設(shè)備失敗,沒(méi)有接收到響應(yīng)結(jié)果!?
? Trying at 115200...? 發(fā)現(xiàn)設(shè)備失敗,沒(méi)有接收到響應(yīng)結(jié)果!


【四】、測(cè)試收發(fā)短信:

Java代碼??

package test;


import java.util.ArrayList;

import java.util.LinkedList;

import java.util.List;


import org.apache.log4j.Level;

import org.apache.log4j.Logger;

import org.smslib.AGateway;

import org.smslib.AGateway.Protocols;

import org.smslib.GatewayException;

import org.smslib.InboundMessage;

import org.smslib.Message.MessageEncodings;

import org.smslib.OutboundMessage;

import org.smslib.Service;

import org.smslib.modem.SerialModemGateway;


public class SendSmsHandler { ?

? ? private static final Logger logger = Logger.getLogger(SendSmsHandler.class); ?

??

? ? private Service smsService; ?

??

? ? /**?

? ? ?* 發(fā)送短信的類

? ? ?*/ ?

? ? public SendSmsHandler() { ?

? ? ? ? smsService = Service.getInstance(); ?//獲得服務(wù)實(shí)例 ?單例模式的

? ? ? ? List<AGateway> agatewayList = new ArrayList<AGateway>(); ?

??

? ? ? ? String portName = "COM4";//"/dev/ttyUSB0";// COM24 ?//使用的端口號(hào)

? ? ? ? SerialModemGateway gateway = new SerialModemGateway( ?

? ? ? ? ? ? ? ? "modem." + portName, portName, 9600, "wavecom", "PL2303"); ?//通過(guò)端口號(hào)頻率名稱等內(nèi)容獲得設(shè)備實(shí)例

? ? ? ? gateway.setInbound(true); ?

? ? ? ? gateway.setOutbound(true); ?

? ? ? ? gateway.setProtocol(Protocols.PDU); ?//發(fā)送凡是PDU

? ? ? ? gateway.setSimPin("0000"); ?

? ? ? ? agatewayList.add(gateway); ?//放到隊(duì)列中,群發(fā)可以放多條就可以了

? ? ? ? try { ?

? ? ? ? ? ? for (AGateway gatewayTmp : agatewayList) { ?

? ? ? ? ? ? ? ? smsService.addGateway(gatewayTmp); ?

? ? ? ? ? ? } ?

? ? ? ? } catch (GatewayException ex) { ?

? ? ? ? ? ? logger.error(ex.getMessage()); ?

? ? ? ? } ?

? ? } ?

??

? ? /**?

? ? ?* ?啟動(dòng)發(fā)送短信的服務(wù)

? ? ?*/ ?

? ? public void start() { ?

? ? ? ? logger.info("SMS service start....."); ?

? ? ? ? try { ?

? ? ? ? ? ? smsService.startService(); ?

? ? ? ? } catch (Exception ex) { ?

? ? ? ? ? ? logger.error("SMS service start error:", ex); ?

? ? ? ? } ?

? ? } ?

??

? ? /**?

? ? ?* ?停止發(fā)送短信服務(wù)

? ? ?*/ ?

? ? public void destroy() { ?

? ? ? ? try { ?

? ? ? ? ? ? smsService.stopService(); ?//停止服務(wù)

? ? ? ? } catch (Exception ex) { ?

? ? ? ? ? ? logger.error("SMS service stop error:", ex); ?

? ? ? ? } ?

? ? ? ? logger.info("SMS service stop"); ?

? ? } ?

??

? ? /**?

? ? ?* send SMS?

? ? ?* 發(fā)送短信的方法

? ? ?* @param msg 發(fā)送的內(nèi)容

? ? ?* @return Boolean 返回是否發(fā)送成功

? ? ?*/ ?

? ? public Boolean sendSMS(OutboundMessage msg) { ?

? ? ? ? try { ?

? ? ? ? ? ? msg.setEncoding(MessageEncodings.ENCUCS2); ?//設(shè)置編碼

? ? ? ? ? ? return smsService.sendMessage(msg); ?//發(fā)送短信并返回結(jié)果

? ? ? ? } catch (Exception e) { ?

? ? ? ? ? ? logger.error("send error:", e); ?

? ? ? ? } ?

? ? ? ? return false; ?

? ? } ?

??

//服務(wù)是否已經(jīng)啟動(dòng)

? ? private boolean isStarted() { ?

? ? ? ? if (smsService.getServiceStatus() == Service.ServiceStatus.STARTED) { ?//服務(wù)的狀態(tài)是否是啟動(dòng)

? ? ? ? ? ? for (AGateway gateway : smsService.getGateways()) { ?

? ? ? ? ? ? ? ? if (gateway.getStatus() == AGateway.GatewayStatuses.STARTED) { ?

? ? ? ? ? ? ? ? ? ? return true; ?

? ? ? ? ? ? ? ? } ?

? ? ? ? ? ? } ?

? ? ? ? } ?

? ? ? ? return false; ?

? ? } ?

??

? ? /**?

? ? ?* read SMS 去讀接收到的短信信息

? ? ?* @return List?

? ? ?*/ ?

? ? public List<InboundMessage> readSMS() { ?

? ? ? ? List<InboundMessage> msgList = new LinkedList<InboundMessage>(); ?

? ? ? ? if (!isStarted()) { ?

? ? ? ? ? ? return msgList; ?

? ? ? ? } ?

? ? ? ? try { ?

? ? ? ? ? ? this.smsService.readMessages(msgList, ?

? ? ? ? ? ? ? ? ? ? InboundMessage.MessageClasses.ALL); ?

? ? ? ? ? ? logger.info("read SMS size: " + msgList.size()); ?

? ? ? ? } catch (Exception e) { ?

? ? ? ? ? ? logger.error("read error:", e); ?

? ? ? ? } ?

? ? ? ? return msgList; ?

? ? } ?

??

? ? /**?

? ? ?* @param args 測(cè)試類

? ? ?*/ ?

? ? public static void main(String[] args) { ?

? ? ? ? Logger.getRootLogger().setLevel(Level.INFO); ?

? ? ? ? OutboundMessage outMsg = new OutboundMessage("189*****", "信息測(cè)試"); ?//綁定接收電話號(hào)碼和發(fā)送的消息

? ? ? ? SendSmsHandler smsHandler = new SendSmsHandler(); ?

? ? ? ? smsHandler.start(); ?//啟動(dòng)

? ? ? ? //發(fā)送短信 ?

? ? ? ? smsHandler.sendSMS(outMsg); ?

? ? ? ? //讀取短信 ?

? ? ? ? List<InboundMessage> readList = smsHandler.readSMS(); ?

? ? ? ? for (InboundMessage in : readList) { ?

? ? ? ? ? ? System.out.println("發(fā)信人:" + in.getOriginator() + " 短信內(nèi)容:" ?

? ? ? ? ? ? ? ? ? ? + in.getText()); ?

? ? ? ? } ?

? ? ? ? smsHandler.destroy(); ?//停止服務(wù)

? ? ? ? System.out.println("-----------"); ?

? ? } ?

??

}




發(fā)送短信親測(cè),手機(jī)能正常接收顯示。讀取設(shè)備的短信程序運(yùn)行結(jié)果結(jié)果如下:

引用


INFO - Service.listSystemInformation(113) | SMSLib: A Java API library forsending and receiving SMS via a GSM modem or other supported gateways.?
This software is distributed under the terms of the Apache v2.0 License.?
Web Site: http://smslib.org?
INFO - Service.listSystemInformation(114) | Version: 3.5.1?
INFO - Service.listSystemInformation(115) | JRE Version: 1.6.0_18?
INFO - Service.listSystemInformation(116) | JRE Impl Version: 16.0-b13?
INFO - Service.listSystemInformation(117) | O/S: Windows Vista / x86 /6.0?
INFO - SmsHandler.start(55) | SMS service start.....?
INFO - DefaultQueueManager.init(92) | Queue directory not defined. Queuedmessages will not be saved to filesystem.?
INFO - ModemGateway.startGateway(188) | GTW: modem.COM24: Starting gateway,using Generic AT Handler.?
INFO - SerialModemDriver.connectPort(68) | GTW: modem.COM24: Opening: COM24@9600?
INFO - AModemDriver.waitForNetworkRegistration(459) | GTW: modem.COM24: GSM:Registered to foreign network (roaming).?
INFO - AModemDriver.connect(175) | GTW: modem.COM24: MEM: Storage LocationsFound: SMBM?
INFO - CNMIDetector.getBestMatch(142) | CNMI: No best match, returning: 1?
INFO - ModemGateway.startGateway(191) | GTW: modem.COM24: Gatewaystarted.?
INFO - SmsHandler.readSMS(113) | read SMS size: 1?
發(fā)信人:8618918001030 短信內(nèi)容:hello 回復(fù)測(cè)試?
INFO - ModemGateway.stopGateway(197) | GTW: modem.COM24: Stoppinggateway...?
INFO - SerialModemDriver.disconnectPort(120) | GTW: modem.COM24: Closing: COM24@9600?
INFO - ModemGateway.stopGateway(201) | GTW: modem.COM24: Gateway stopped.?
INFO - SmsHandler.destroy(72) | SMS service stop?
-----------


總結(jié)

以上是生活随笔為你收集整理的java 短信猫发送短信的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。