前言
目前用過的開源短信貓工具有jSMSEngine和SMSLib,下載地址及使用網上有很多,本文只是簡要介紹短信貓的安裝使用及在項目中遇到的坑。
說明:本文主要解決windows上通過短信貓發送成功而Linux上發送失敗的問題。
通過短信貓發送短信案例GitHub地址:https://github.com/Airch/jSMSEngineWebPro
安裝部署
- Linux系統 2.6.18以上內核已自帶usb轉串口驅動,所以一般情況下不需要安裝驅動。
- 將usb短信貓插入服務器usb口,使用
dmesg
命令查看,出現以下信息則說明系統已經識別出短信貓,接口爲/dev/ttyUSB0 (注意:如果USB接口被其他設備佔用,識別出的接口可能不一樣,一般是ttyUSB0或者ttyUSB1)
亦可使用命令:ls /dev/ttyUSB*
,或lsusb
檢查系統是否識別出短信貓。 - 查看服務器jdk安裝版本,使用java –version命令,如果顯示結果中帶64-Bit字樣,則是64位JDK,否則是32位JDK(注意:JDK的位數和服務器的位數不是同一個概念,32位服務器只能裝32位JDK,64位服務器可能裝64位JDK,也可能裝32位JDK)。
- 如果是32位JDK,將32位的librxtxSerial.so放入
$JAVA_HOME/jre/lib/i386
目錄下,如果是64位JDK,將64位的librxtxSerial.so放入$JAVA_HOME/jre/lib/amd64
目錄下。
Windows則複製rxtxSerial.dll 到%JAVA_HOME%/jre/bin/
。 - 項目lib引入jSMSEngine.jar和RXTXComm.jar(注意:32位的so是RXTX-2.1-7pre20版本,64位的so是RXTX-2.2-pre2版本,RXTXComm.jar只能向前兼容,否則低版本的jar調用高版本的so會報nativeGetVersion的異常)。
如此環境便已搭建好,只需調用接口發送短信即可。
jSMSEngine短信貓案例代碼
基於jSMSEngine做了封裝,只暴露出簡單的短信發送接口,並且將短信貓的配置參數從properties配置文件讀取,有興趣的朋友可從GitHub上下載下來玩玩。
GitHub地址:https://github.com/Airch/jSMSEngineWebPro
坑
windows上短信發送正常,linux上則發不出去,等了很長時間後報GSM device is not responding
異常。
解決步驟:
1、換線,將短信貓配的usb轉串口線換成PL2303,淘寶上有,買過來換上,該線兼容性較好;
2、改源碼,jSMSEngine開源包裏需要將CSerialDriver.java
的第88行改成
serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
這樣就可以解決windows上可以發送成功而linux失敗的問題。
3、打包,最後爲了方便,可以將修改後的jSMSEngine的源碼重新打成jar包,打包之前需要線解決CGSMAlphabets.java
的亂碼問題,否則項目依賴該包運行時也會報錯,可以用其他工具打開該文件,如sublime,該工具內顯示正常不亂碼,從sublime裏複製該類的內容到eclipse裏就會顯示正常,然後執行export-->jar file
。