姜旭東 徐鈺頔 吳書賢 孫耀明
[摘 要]此次設(shè)計的界面都是用JAVA語言編寫的客戶端界面,用來顯示監(jiān)測系統(tǒng)所檢測到的各項數(shù)據(jù)。通過JAVA socket實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)的接收。用戶登錄的界面需要用戶輸入用戶名及密碼進行登錄,登錄過后,通過該客戶端聯(lián)網(wǎng)后便可讀取服務(wù)器中的數(shù)據(jù),并顯示出來。
[關(guān)鍵詞]JAVA socket 網(wǎng)絡(luò)連接 用戶登錄界面 數(shù)據(jù)顯示界面
中圖分類號:U283.1 文獻標(biāo)識碼:A 文章編號:1009-914X(2017)17-0387-01
0.引言
Java是由Sun Microsystems公司推出的Java面向?qū)ο蟪绦蛟O(shè)計語言(以下簡稱Java語言)和Java平臺的總稱。 1991年,Sun公司的James Gosling,Bill Joe等人,為電視、控制烤面包機等家用電器的交互操作開發(fā)了一個Oak(橡樹)軟件,他是Java的前身。當(dāng)時,Oak并沒有引起人們的注意,直到1994年,隨著互聯(lián)網(wǎng)和3W的飛速發(fā)展,他們用Java編制了HotJava瀏覽器,得到了Sun公司首席執(zhí)行官Scott McNealy的支持,得以研發(fā)和發(fā)展。由于Oak商標(biāo)已經(jīng)被Oak Technology注冊,1995年Oak短暫更名為Green,最后更名為Java。Java的得名還有段小插曲。一天,Java小組成員正在喝咖啡時,議論給新語言起個什么名字的問題,有人提議用Java(Java是印度尼西亞盛產(chǎn)咖啡的一個島嶼),這個提議得到了其他成員的贊同,于是就采用Java來命名此新語言。
1.系統(tǒng)結(jié)構(gòu)
本系統(tǒng)分為三大部分,用戶登錄界面,數(shù)據(jù)接收和數(shù)據(jù)顯示界面。其中顯示界面分別顯示甲醛濃度,溫度,濕度和光照度。
單片機運行WiFi驅(qū)動,將有關(guān)甲醛的數(shù)據(jù)發(fā)送到服務(wù)器。通過JAVA語言編寫的登錄界面輸入用戶名和密碼登錄,PC上的JAVA程序的socket類接收經(jīng)WiFi發(fā)送到服務(wù)器端的甲醛有關(guān)數(shù)據(jù)經(jīng)過處理后在顯示界面進行顯示,達到通過網(wǎng)絡(luò)遠程監(jiān)視的目的。通信部分的實現(xiàn)實質(zhì)上是客戶端>>>>>服務(wù)器端>>>>>客戶端的通信,單片機運行WiFi驅(qū)動給服務(wù)器發(fā)送數(shù)據(jù),實際上就是一個客戶端,PC從服務(wù)器端接收數(shù)據(jù)并處理,最終顯示在界面上,實質(zhì)上也是客戶端。通信的雙方需協(xié)商好TCP協(xié)議,需共同使用一個端口(一般而言,一臺計算機只有單一的連到網(wǎng)絡(luò)的“物理連接”(physical connection),所有的數(shù)據(jù)都通過此連接,對內(nèi),對外送達特定的計算機。這就是端口),這樣才能保證數(shù)據(jù)被正確的接收。
網(wǎng)絡(luò)程序設(shè)計中的端口并非真實的物理存在,而是一個假想的連接裝置。端口被規(guī)定為一個在0~65535之間的整數(shù)。
網(wǎng)絡(luò)程序中的套接字(socket)用于將應(yīng)用程序與端口連接起來(程序設(shè)計者只需創(chuàng)建socket類對象,即可使用套接字)。
2.軟件設(shè)計
JAVA語言編寫的程序是跨平臺的而且擁有較高的安全性,所以選擇用它來進行程序設(shè)計。用JAVA語言中的 swing類來編寫界面,首先創(chuàng)建容器,創(chuàng)建一個單選按鈕目的是增加一個“記住密碼“”的單選按鈕控件。使用文本框接收用戶輸入(一個應(yīng)用程序所有輸入功能的界面幾乎都是文本控件接收用戶輸入的)。通過javax.swing.JPasswordField類創(chuàng)建密碼框。密碼框與文本框的定義與用法基本相同,唯一不同的是密碼框控件將用戶輸入的字符串以某種字符顯示,如“*”字符,用來隱藏用戶的密碼。之后通過add方法將自定義的按鈕和標(biāo)簽添加到創(chuàng)建的容器中,通過setSize方法來設(shè)置窗體大小,使用setBounds方法可以設(shè)置添加的按鈕與標(biāo)簽的位置和大小,通過調(diào)節(jié)位置和大小使界面看起來美觀。關(guān)鍵的一步是用setVisible(true)使JFrame窗體可見。為了使界面看起來更美觀,也可以通過使用setBackgound方法給界面添加背景顏色。這樣客戶端的登錄界面和顯示界面就完成了。
3.雙方協(xié)議
Socket類接收數(shù)據(jù)時,需要檢測數(shù)據(jù)才可以開始接收,以保證接收到的數(shù)據(jù)的準(zhǔn)確性。收發(fā)雙方要事先確定一個協(xié)議,例如接收方只在發(fā)送方發(fā)送的數(shù)據(jù)的包頭為0x00 0x00時接收這一數(shù)據(jù),包尾為0x08 0x09則結(jié)束接收。這樣就可以保證接收到完整的正確的數(shù)據(jù)。另外socket類還需使用相同的端口進行通信。
4.總結(jié)
JAVA是一種安全簡潔的編程語言,方便對界面的編寫設(shè)計和網(wǎng)絡(luò)的接收。代碼較為簡潔明了,不容易出現(xiàn)錯誤,較為穩(wěn)定。JAVA編寫的界面較為整齊,可以使人一目了然,網(wǎng)絡(luò)接收通過socket類關(guān)于read的各種方法可以有效的解決。整個設(shè)計程序思想相對簡單,代碼不冗余,可讀性高??蛻舳私缑娌捎玫氖橇魇讲季?,用到了JFrame類中的setLayout方法,增強了界面的可編程性,能按照自己的想法進行布局,達到想要的完美效果。密碼框中的密碼用“*”字符代替本來的密碼顯示,很好地保護了用戶的賬號安全和隱私,同時提高了系統(tǒng)的安全性。