1. 程式人生 > >關於808部標協議專案開發到部署的心得

關於808部標協議專案開發到部署的心得

最近因專案要求需要對接車輛的GPS,對應的是部標808協議,剛剛接手一頭霧水,於是各種網上找資料,終於弄明白了,本文不介紹具體程式碼,主要是講解下建立,開發,部署的整體技術思路:

開發步驟:使用maven構建專案--》編寫808協議--》匯出專案為jar包--》上傳到Linux伺服器--》執行jar--》埠開放--》等待終端註冊傳送資料--》資料儲存MongoDB--》web專案進行展示

1.808協議編寫:

       開發協議的服務需要基於socket網路進行程式設計,但是建議大家不要直接使用socket來進行程式設計,費事費力,直接使用網路程式設計netty框架,netty很強大,支援阻塞IO和非阻塞式IO,簡簡單單幾行程式碼就搞定網路服務端,本次808使用的是非阻塞IO  

處理流程:netty建立808服務和指定埠,終端註冊根據服務所在IP和埠註冊成功,自動傳送GPS資料到服務端,資料以位元組流的形式傳遞,詳情參考808服務標準協議文件,通過對於的資料解析規則,對位元組流進行解析,最後得到資料物件,並把資料物件儲存到資料庫,我這裡用的是mongoDB,當然也可以用oracle或者redis

2.匯出jar包

   maven專案匯出jar時一定得注意要在pom.xml配置,作用是指定jar主入口和自動將依賴的jar包也一起打包,參考以下程式碼,:

<plugin>
                <artifactId> maven-assembly-plugin </artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>cn.hylexus.jt808.server.TCPServer</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

3.上傳到linux伺服器

   匯出好jar包後,在linux伺服器裡可以建立一個專屬目錄存放jar檔案和日誌,建立好資料夾後把jar檔案上傳到目錄裡,上傳命令:rz -y  -y是指替換已有檔案,如果是第一次上傳則不需要

4.執行jar,我這裡用到了第3種方式執行jar包

   執行jar,前提必須要在linux環境中安裝好了JDK,執行jar有幾種方式: 

  4-1.java -jar *.jar   執行java檔案,當按ctrl+c 或者關閉ssh彈窗時,程式執行會中斷執行

   4-2.java -jar *.jar &   &代表在後臺執行,使用ctrl+c不會中斷程式的執行,但是關閉視窗會中斷程式的執行。

  4-3.nohup java -jar XXX.jar &   使用這種方式執行的程式日誌會輸出到當前目錄下的nohup.out檔案,使用ctrl+c中斷或者關閉窗    口都不會中斷程式的執行。

  4-4.nohup java -jar XXX.jar >temp.out &    >temp.out的意思是將日誌輸出重定向到temp.out檔案,使用ctrl+c中斷或者關閉視窗都不會中斷程式的執行。

執行jar成功之後,可以執行ps -aux 命令,檢視當前所有埠詳情,是否包含了本次執行的jar檔案埠

5.埠開放,因為808服務端裡面建立已經指定改程式的埠,在linux系統中必須要開放此埠,否則終端無法註冊

  埠開放使用命令:

       nc -lp 20448 & (開啟20048 埠,即telnet)
  netstat -an | grep 20048  (檢視是否開啟20448 埠)

     開啟埠之後,外部的終端就可以遠端註冊了

6.等待終端註冊傳送資料,一旦有終端通過伺服器IP和該程式埠進行註冊時,808協議就會自動解析資料

7.資料儲存MongoDB,資料解析成功後,儲存到mongodb資料庫中

8.web專案進行展示,web端展示我就不詳細講了,主要實現了路線跟蹤,車輛定位,警報通知等功能

本人第一次開發這個808專案,有不足的地方還請大家指出,一起探討一起進步。