?

基于Java局域網內實時通信系統設計

2014-10-21 19:57李佳毛崠博
計算機光盤軟件與應用 2014年24期
關鍵詞:服務器端局域網客戶端

李佳 毛崠博

摘 要:本系統主要利用Java語言,C/S架構,并結合了Socket網絡編程技術與Microsoft Office Access(數據庫軟件)技術,選擇TCP傳輸協議在兩臺計算機之間實現了文本與文件的實時傳輸功能和離線留言功能,進而實現局域網內計算機間的實時通信。

關鍵詞:實時通信;局域網;網絡編程;服務器端;客戶端

中圖分類號:TP393.18

1 局域網內實時通信的發展概況

目前,國內外對局域網內通信的發展情況有一定差別。下面分別從國外和國內兩大方面對局域網內通信的發展情況進行介紹。

1.1 國外的發展概況

由于國外的計算機技術發展相對來講比較成熟,他們對充分利用內部網絡資源的認知比較早,并且很早前就已經開發了相關的產品,所以現在各種以局域網為單位的實時通信系統已經進入相對穩定發展階段,在各個大小企業中也得到了良好的實際應用效果。

1.2 國內的發展概況

在國內,企業對局域網的實時通信系統認知和使用情況并不是很好,在局域網內實現文件傳輸和資源共享方面,各個企業單位還存在很大的缺陷。那么,基于局域網內部網絡開發的產品也就比較少,而且無論是從理論上或實踐上,我們的技術都還不夠完善,所以在企業中也就沒有得到廣泛的應用。

2 相關理論及基礎技術

本系統采用了Java編程語言,并結合了對Socket網絡編程和Microsoft Office Access數據庫技術以及TCP傳輸協議的應用。對各技術具體介紹如下。

2.1 Java語言

Java作為一種程序設計語言,它是面向對象的。通過網絡協議,我們可以直接或者間接的與其它計算機進行通信,這就是網絡編程的目的,要使兩臺計算機之間進行通信需解決兩個主要問題:一個是如何準確定位網絡上的主機地址;另外一個是定位到主機以后如何有效安全地進行通信[1]。

Java是一種提供了比較強大的網絡編程接口的網絡編程語言。針對不同層次的網絡通信,Java提供了4大類網絡功能,其中,TCP/IP是Internet使用的協議組,而Socket是該協議組的組合,Socket實現了兩臺計算機之間通過端口來實現通信,Socket類是在Java.net包中提供的,該包隱藏了Socket的具體實現細節,使得程序員不需要自己編寫接口程序,就可以快速的實現網絡通信[2]。

2.2 Socket編程實現原理

進程之間要進行通信,那么首先就要建立各自的Socket,每個Socket都可以進行讀操作和寫操作,而進行讀和寫操作的時候,分別用到的就是Socket中的輸入流和輸出流。

建立連接后,客戶程序就可以向Socket里寫入自己的請求,在一個連接請求被服務器監聽到后,客戶端和服務器就成功建立了一個通信連接。而在成功建立通信連接的過程中,被本地端口號綁定的客戶端會與一個Socket連接,客戶端可以通過這個Socket的寫操作來通知服務器,然后通過Socket的讀操作來得到數據。服務器也同樣地得到一個本地端口號,而且它還需要一個新的端口號來監聽原始端口上的其它連接請求。而且服務器也可以給它的本地端口連接一個Socket并通過讀寫操作處理來自客戶端的請求[3]。

2.2.1 建立Socket應注意的問題

當建立一個通信用的Socket的時候,必須指出通信要使用什么樣的的風格,使用什么協議等,也就是需要注意下面的問題。

(1)在通信過程中是否必須始終面向一個連接,我們把這種情況形象地比作電話,我們打電話的時候首先要和對方的電話建立連接,在整個通話的過程中,我們會一直保持這個連接,直到雙方中的一方掛斷電話。另一種情況就是傳輸數據的過程中不需要建立連接,就像發送電報一樣,直接發送數據就可以了;

(2)在數據傳輸的過程中是否允許數據丟失,有的通信風格能夠保證接受到的數據順序和發送時的順序是一致的,而有的不是這樣:既不能保證按順序到達,也不能保證數據是否丟失[4]。

2.2.2 從連接建立到結束的過程

從連接的建立到連接的結束,每個Socket應用都大致包含以下幾個基本步驟。

服務器端的Socket綁定于特定的端口,服務器偵聽Socket等待連接請求??蛻舳讼蚍掌鞫撕吞囟ǘ丝谔峤贿B接請求。服務器接受連接,產生一新的Socket,綁定到另一端口,由此Socket來處理和客戶端的交互,服務器繼續偵聽原來的Socket來接受其他客戶端的連接請求。服務器端每次當建立一個新的Socket連接的時候,主線程就啟動一個新的線程,負責服務器與客戶端的通信;而主線程繼續等待下一個客戶端的連接。當客戶端斷開連接后,子線程釋放其占用的所有Socket資源[5]。

連接成功后客戶端也會產生一個Socket,并通過它來與服務器端進行通信,要注意的是客戶端Socket并不與特定端口綁定。最后,服務器端和客戶端就通過讀取和寫入各自的Socket來進行通信。

2.3 Microsoft Office Access數據庫

本設計通過對Access數據庫的應用,更好的管理用戶信息、用戶列表。用戶可以修改自己的資料和密碼,查看其他用戶資料,隨意添加或刪除用戶。服務器端可以顯示在線用戶以及所有用戶資料。這所有的通信用戶信息都記錄在數據庫里,并以列表形式顯示到界面上,使系統好友界面更直觀、更友善。

2.4 TCP與UDP協議

TCP與UDP是工作在傳輸層的兩個核心協議,它們可以為應用層提供會話和數據報通信服務。雖然,在本設計中,編寫Java應用程序時,主要是在第4層也就是在應用層上完成的。但是,仍然需要掌握傳輸層的TCP和UDP協議,因為這將決定我們在編程時使用哪種Java類。

3 系統總體設計分析

3.1 系統設計目標

根據調研,本設計需要滿足以下幾個系統設計目標:

(1)實用性的原則。按照簡單實用的原則真正為局域網的實際工作服務,合理設計本系統。

(2)程序可擴展性的原則。采用開放的標準和接口,便于將來想要添加更多的功能。

(3)傳輸可靠性的原則。必須為用戶提供可靠的服務,尤其是要保證傳輸的穩定性。

(4)友好性的原則。希望本設計對計算機知識了解很少的用戶也可以使用,所以系統操作上要求簡單方便,便于用戶使用。

3.2 系統總體結構

本系統采用目前比較流行的網絡通信模型C/S結構。在C/S結構中,服務器端與客戶端是上級和下級的關系。服務器端始終處于被動地等待客戶端提出連接請求,并給予響應??蛻舳嗽谛枰掌鞯臅r候就向服務器提出連接請求。

3.3 系統功能分析

從企業內部的實用性角度考慮,本系統應具備3大基本功能,即局域網內點對點文本傳輸功能,離線留言功能和文件傳輸功能。在設計時,應根據系統的設計目標,使安排布局上具有簡潔、流暢等特點,以及在編程時考慮傳輸的穩定與快捷,真正做到“簡潔、高效、流暢、安全”的使用環境。根據以上的功能特點分析,本系統可由兩大模塊來實現:服務器端模塊和客戶端模塊。其中,客戶端模塊實現兩個用戶之間的文本傳輸、離線留言和文件傳輸功能。

4 系統詳細設計

本系統對于主要模塊設計部分可以分為三大部分:服務器端模塊、客戶端模塊和系統功能模塊。其中服務器端模塊和客戶端模塊的設計主要通過套接字來完成服務器端與客戶端間的連通。功能模塊設計主要分為:文本實時傳輸和文件實時傳輸兩方面。下面分別對這些模塊的設計進行詳細的介紹。

4.1 服務器端與客戶端之間的整體工作模式

本系統通過Socket接口來實現客戶端、服務器端之間的通信,Socket是兩個程序進行雙向數據傳輸的網絡通信端點,主要由一個端口號和一個IP地址來標識。

服務器端首先要創建自己的Socket,并要把這個Socket與某一個端口綁定,然后通過accept()方法監聽有無連接請求??蛻舳送瑯邮紫纫惨獎摻ㄗ约旱腟ocket,這個Socket會指明服務器程序所在的IP地址,這時就發出了自己的連接請求。

4.2 服務器端詳細業務流程

本系統中,首先服務器端處于開啟狀態,時刻監聽有無來自客戶端的連接請求。若發現客戶端發出連接請求,立即給予響應。在服務器端與客戶端連接后,服務器端可以查詢在線用戶,查詢所有用戶基本資料、用戶名、密碼等信息。在結束連接時,關閉服務器。

4.3 客戶端詳細業務流程

本系統中,欲使客戶端與服務器建立連接,首先客戶端需向服務器發送一個連接請求,服務器響應其請求后,雙方才能連通。然后,客戶端通過用戶名和密碼進行登錄。在登錄之前需要進行IP測試,當IP測試成功,既與服務器連接成功,此時客戶端用戶就可以與其他用戶進行實時通信,實現本系統功能。當用戶不進行通信時即可結束線程。

5 結束語

本設計最大優點之一就是界面友好、簡單、用戶列表清晰易操作。即使從沒有使用過本系統的用戶,也可很快上手。所有功能界面都集成到一起,大大減少了界面的數量以及界面交換的不便。

它的另外一個優點就是有很好的可擴展性,本設計采用的是設計模式,很好的運用了Java中的繼承和抽象類等特性。這種設計模式就使程序有了很好的擴展性。當想要加一些功能的時候,只要在抽象類中對想要加入功能的方法進行聲明,然后再用具體的實體類去實現就可以了,而不會對其他的程序造成影響,有很好的獨立性。

參考文獻:

[1]杜瑞慶,閆敬,李銀兵.Java中的數據報通訊方式[J].福建電腦,2007(04):189.

[2]王靜,曲鳳娟.基于Socket的多用戶并發通信的設計[J].福建電腦,2007(03):164.

[3]蘇宏良.儲能電池組遠程監控系統研究與設計[D].武漢:武漢理工大學,2010.

[4]丁穎麗.三層計算構架中Logistic回歸分析的設計與實現[D].上海:東華大學,2008.

[5]陳更力,張青.基于Java Socket 網絡編程的一種新實現[J].電腦開發與應用,2006(06):13.

作者簡介:李佳(1988.01-),山東黃縣人,助理工程師,工學學士,研究方向:通信工程。

作者單位:國家新聞出版廣電總局二九二臺,山東青島 266000

猜你喜歡
服務器端局域網客戶端
Linux環境下基于Socket的數據傳輸軟件設計
軌道交通車-地通信無線局域網技術應用
基于VPN的機房局域網遠程控制系統
縣級臺在突發事件報道中如何應用手機客戶端
孵化垂直頻道:新聞客戶端新策略
基于Vanconnect的智能家居瘦客戶端的設計與實現
淺析異步通信層的架構在ASP.NET 程序中的應用
基于802.1Q協議的虛擬局域網技術研究與實現
局域網性能的優化
基于Qt的安全即時通訊軟件服務器端設計
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合