国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Java局域網(wǎng)內(nèi)實(shí)時通信系統(tǒng)設(shè)計(jì)

2014-10-21 19:57李佳毛崠博
關(guān)鍵詞:服務(wù)器端局域網(wǎng)客戶端

李佳 毛崠博

摘 要:本系統(tǒng)主要利用Java語言,C/S架構(gòu),并結(jié)合了Socket網(wǎng)絡(luò)編程技術(shù)與Microsoft Office Access(數(shù)據(jù)庫軟件)技術(shù),選擇TCP傳輸協(xié)議在兩臺計(jì)算機(jī)之間實(shí)現(xiàn)了文本與文件的實(shí)時傳輸功能和離線留言功能,進(jìn)而實(shí)現(xiàn)局域網(wǎng)內(nèi)計(jì)算機(jī)間的實(shí)時通信。

關(guān)鍵詞:實(shí)時通信;局域網(wǎng);網(wǎng)絡(luò)編程;服務(wù)器端;客戶端

中圖分類號:TP393.18

1 局域網(wǎng)內(nèi)實(shí)時通信的發(fā)展概況

目前,國內(nèi)外對局域網(wǎng)內(nèi)通信的發(fā)展情況有一定差別。下面分別從國外和國內(nèi)兩大方面對局域網(wǎng)內(nèi)通信的發(fā)展情況進(jìn)行介紹。

1.1 國外的發(fā)展概況

由于國外的計(jì)算機(jī)技術(shù)發(fā)展相對來講比較成熟,他們對充分利用內(nèi)部網(wǎng)絡(luò)資源的認(rèn)知比較早,并且很早前就已經(jīng)開發(fā)了相關(guān)的產(chǎn)品,所以現(xiàn)在各種以局域網(wǎng)為單位的實(shí)時通信系統(tǒng)已經(jīng)進(jìn)入相對穩(wěn)定發(fā)展階段,在各個大小企業(yè)中也得到了良好的實(shí)際應(yīng)用效果。

1.2 國內(nèi)的發(fā)展概況

在國內(nèi),企業(yè)對局域網(wǎng)的實(shí)時通信系統(tǒng)認(rèn)知和使用情況并不是很好,在局域網(wǎng)內(nèi)實(shí)現(xiàn)文件傳輸和資源共享方面,各個企業(yè)單位還存在很大的缺陷。那么,基于局域網(wǎng)內(nèi)部網(wǎng)絡(luò)開發(fā)的產(chǎn)品也就比較少,而且無論是從理論上或?qū)嵺`上,我們的技術(shù)都還不夠完善,所以在企業(yè)中也就沒有得到廣泛的應(yīng)用。

2 相關(guān)理論及基礎(chǔ)技術(shù)

本系統(tǒng)采用了Java編程語言,并結(jié)合了對Socket網(wǎng)絡(luò)編程和Microsoft Office Access數(shù)據(jù)庫技術(shù)以及TCP傳輸協(xié)議的應(yīng)用。對各技術(shù)具體介紹如下。

2.1 Java語言

Java作為一種程序設(shè)計(jì)語言,它是面向?qū)ο蟮摹Mㄟ^網(wǎng)絡(luò)協(xié)議,我們可以直接或者間接的與其它計(jì)算機(jī)進(jìn)行通信,這就是網(wǎng)絡(luò)編程的目的,要使兩臺計(jì)算機(jī)之間進(jìn)行通信需解決兩個主要問題:一個是如何準(zhǔn)確定位網(wǎng)絡(luò)上的主機(jī)地址;另外一個是定位到主機(jī)以后如何有效安全地進(jìn)行通信[1]。

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

2.2 Socket編程實(shí)現(xiàn)原理

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

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

2.2.1 建立Socket應(yīng)注意的問題

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

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

(2)在數(shù)據(jù)傳輸?shù)倪^程中是否允許數(shù)據(jù)丟失,有的通信風(fēng)格能夠保證接受到的數(shù)據(jù)順序和發(fā)送時的順序是一致的,而有的不是這樣:既不能保證按順序到達(dá),也不能保證數(shù)據(jù)是否丟失[4]。

2.2.2 從連接建立到結(jié)束的過程

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

服務(wù)器端的Socket綁定于特定的端口,服務(wù)器偵聽Socket等待連接請求??蛻舳讼蚍?wù)器端和特定端口提交連接請求。服務(wù)器接受連接,產(chǎn)生一新的Socket,綁定到另一端口,由此Socket來處理和客戶端的交互,服務(wù)器繼續(xù)偵聽原來的Socket來接受其他客戶端的連接請求。服務(wù)器端每次當(dāng)建立一個新的Socket連接的時候,主線程就啟動一個新的線程,負(fù)責(zé)服務(wù)器與客戶端的通信;而主線程繼續(xù)等待下一個客戶端的連接。當(dāng)客戶端斷開連接后,子線程釋放其占用的所有Socket資源[5]。

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

2.3 Microsoft Office Access數(shù)據(jù)庫

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

2.4 TCP與UDP協(xié)議

TCP與UDP是工作在傳輸層的兩個核心協(xié)議,它們可以為應(yīng)用層提供會話和數(shù)據(jù)報通信服務(wù)。雖然,在本設(shè)計(jì)中,編寫Java應(yīng)用程序時,主要是在第4層也就是在應(yīng)用層上完成的。但是,仍然需要掌握傳輸層的TCP和UDP協(xié)議,因?yàn)檫@將決定我們在編程時使用哪種Java類。

3 系統(tǒng)總體設(shè)計(jì)分析

3.1 系統(tǒng)設(shè)計(jì)目標(biāo)

根據(jù)調(diào)研,本設(shè)計(jì)需要滿足以下幾個系統(tǒng)設(shè)計(jì)目標(biāo):

(1)實(shí)用性的原則。按照簡單實(shí)用的原則真正為局域網(wǎng)的實(shí)際工作服務(wù),合理設(shè)計(jì)本系統(tǒng)。

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

(3)傳輸可靠性的原則。必須為用戶提供可靠的服務(wù),尤其是要保證傳輸?shù)姆€(wěn)定性。

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

3.2 系統(tǒng)總體結(jié)構(gòu)

本系統(tǒng)采用目前比較流行的網(wǎng)絡(luò)通信模型C/S結(jié)構(gòu)。在C/S結(jié)構(gòu)中,服務(wù)器端與客戶端是上級和下級的關(guān)系。服務(wù)器端始終處于被動地等待客戶端提出連接請求,并給予響應(yīng)??蛻舳嗽谛枰?wù)器的時候就向服務(wù)器提出連接請求。

3.3 系統(tǒng)功能分析

從企業(yè)內(nèi)部的實(shí)用性角度考慮,本系統(tǒng)應(yīng)具備3大基本功能,即局域網(wǎng)內(nèi)點(diǎn)對點(diǎn)文本傳輸功能,離線留言功能和文件傳輸功能。在設(shè)計(jì)時,應(yīng)根據(jù)系統(tǒng)的設(shè)計(jì)目標(biāo),使安排布局上具有簡潔、流暢等特點(diǎn),以及在編程時考慮傳輸?shù)姆€(wěn)定與快捷,真正做到“簡潔、高效、流暢、安全”的使用環(huán)境。根據(jù)以上的功能特點(diǎn)分析,本系統(tǒng)可由兩大模塊來實(shí)現(xiàn):服務(wù)器端模塊和客戶端模塊。其中,客戶端模塊實(shí)現(xiàn)兩個用戶之間的文本傳輸、離線留言和文件傳輸功能。

4 系統(tǒng)詳細(xì)設(shè)計(jì)

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

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

本系統(tǒng)通過Socket接口來實(shí)現(xiàn)客戶端、服務(wù)器端之間的通信,Socket是兩個程序進(jìn)行雙向數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)通信端點(diǎn),主要由一個端口號和一個IP地址來標(biāo)識。

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

4.2 服務(wù)器端詳細(xì)業(yè)務(wù)流程

本系統(tǒng)中,首先服務(wù)器端處于開啟狀態(tài),時刻監(jiān)聽有無來自客戶端的連接請求。若發(fā)現(xiàn)客戶端發(fā)出連接請求,立即給予響應(yīng)。在服務(wù)器端與客戶端連接后,服務(wù)器端可以查詢在線用戶,查詢所有用戶基本資料、用戶名、密碼等信息。在結(jié)束連接時,關(guān)閉服務(wù)器。

4.3 客戶端詳細(xì)業(yè)務(wù)流程

本系統(tǒng)中,欲使客戶端與服務(wù)器建立連接,首先客戶端需向服務(wù)器發(fā)送一個連接請求,服務(wù)器響應(yīng)其請求后,雙方才能連通。然后,客戶端通過用戶名和密碼進(jìn)行登錄。在登錄之前需要進(jìn)行IP測試,當(dāng)IP測試成功,既與服務(wù)器連接成功,此時客戶端用戶就可以與其他用戶進(jìn)行實(shí)時通信,實(shí)現(xiàn)本系統(tǒng)功能。當(dāng)用戶不進(jìn)行通信時即可結(jié)束線程。

5 結(jié)束語

本設(shè)計(jì)最大優(yōu)點(diǎn)之一就是界面友好、簡單、用戶列表清晰易操作。即使從沒有使用過本系統(tǒng)的用戶,也可很快上手。所有功能界面都集成到一起,大大減少了界面的數(shù)量以及界面交換的不便。

它的另外一個優(yōu)點(diǎn)就是有很好的可擴(kuò)展性,本設(shè)計(jì)采用的是設(shè)計(jì)模式,很好的運(yùn)用了Java中的繼承和抽象類等特性。這種設(shè)計(jì)模式就使程序有了很好的擴(kuò)展性。當(dāng)想要加一些功能的時候,只要在抽象類中對想要加入功能的方法進(jìn)行聲明,然后再用具體的實(shí)體類去實(shí)現(xiàn)就可以了,而不會對其他的程序造成影響,有很好的獨(dú)立性。

參考文獻(xiàn):

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

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

[3]蘇宏良.儲能電池組遠(yuǎn)程監(jiān)控系統(tǒng)研究與設(shè)計(jì)[D].武漢:武漢理工大學(xué),2010.

[4]丁穎麗.三層計(jì)算構(gòu)架中Logistic回歸分析的設(shè)計(jì)與實(shí)現(xiàn)[D].上海:東華大學(xué),2008.

[5]陳更力,張青.基于Java Socket 網(wǎng)絡(luò)編程的一種新實(shí)現(xiàn)[J].電腦開發(fā)與應(yīng)用,2006(06):13.

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

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

猜你喜歡
服務(wù)器端局域網(wǎng)客戶端
Linux環(huán)境下基于Socket的數(shù)據(jù)傳輸軟件設(shè)計(jì)
軌道交通車-地通信無線局域網(wǎng)技術(shù)應(yīng)用
基于VPN的機(jī)房局域網(wǎng)遠(yuǎn)程控制系統(tǒng)
縣級臺在突發(fā)事件報道中如何應(yīng)用手機(jī)客戶端
孵化垂直頻道:新聞客戶端新策略
基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
基于802.1Q協(xié)議的虛擬局域網(wǎng)技術(shù)研究與實(shí)現(xiàn)
局域網(wǎng)性能的優(yōu)化
基于Qt的安全即時通訊軟件服務(wù)器端設(shè)計(jì)