聊天室論文-學位論文_第1頁
聊天室論文-學位論文_第2頁
聊天室論文-學位論文_第3頁
聊天室論文-學位論文_第4頁
聊天室論文-學位論文_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGE內蒙古工業大學本科畢業設計說明書PAGE內蒙古工業大學本科畢業設計說明書摘要從實際工程應用角度出發,以計算機網絡原理為指導,結合當前網絡中的一些常用技術開發了本聊天室工具。該工具具有聊天室聊天、二人私聊、表情的應用以及請離用戶的功能。論文主要對當今聊天軟件的發展情況、與該聊天軟件相關的各種技術以及該聊天工具的實現做了一個詳細的闡述。本聊天室設計初衷是為軟件開發人員在局域網中方便交流,減少成本,消除由于交流不同帶來的開發成本上升。作為計算機網絡的應用之一聊天工具,受到了用戶的普遍愛好,它把人們帶進了一個虛擬的網絡世界,大大的加深了人們之間的聯系。它將會作為未來人們通過因特網相互聯系和娛樂的主要平臺。聊天工具的開發主要用到了網絡通信技術、語音的采集、壓縮、傳輸、解壓縮以及回放等技術,文件傳輸技術、windows的多線程技術以及視頻的采集、壓縮解壓縮技術等。本軟件基于Socket通信,在此基礎上,實現點對點聊天、廣播聊天、一對多聊天、悄悄話以及表情,可以運行于任何支持TCP/IP協議的機器上。用到了多線程的設計,因此線程之間的同步是一大關鍵之處。由于系統采用C/S(Client/Server)結構,客戶端與客戶端以及客戶端與服務器端需要傳送一些控制消息,因此系統需要自定義一些消息類型,這是該聊天工具的又一大關鍵之處。關鍵詞 : 網絡通信;私人聊天;Socket;JavaGUIAbstractFromactualprojectapplicationangleembarking,takethecomputernetworkprincipleastheinstruction,intheunioncurrentnetworksomecommonlyusedtechnologydevelopmentthischatroom.Thissoftwarehasthechatroomtochat,twopeopleprivatetochat,theexpressionapplicationaswellaskickoutusersfunction.Thepresentpapermainlytocurrentchatssoftware'sstateofplay,withtochatthesoftwarerelatedeachkindoftechnologyaswellashowdoesthischatroomtorealizehasmadeadetailedelaboration.Theoriginaldesignintentionofthischatroomisfacilitatestheexchangeforthesoftwaredevelopersinthelocalareanetwork,reducesthecost,eliminates,becauseexchangesthedevelopmentcostrisewhichbringsdifferently.Chatroomisoneofcomputernetwork'sapplications,whichhasreceiveduser'suniversalhobby.Ithastakenpeopleintoahypothesizednetworkworld,deepeningpeople'srelation.ItwillthemainplatformthroughtheInternetmutualconnectionandentertainment'sinfuture.Thedevelopmentofchatroommainlytousenetworkservicetechnical,thefiletransfertechnology,thewindowsandsoontechnology,pronunciationgathering,compressiontransmission,solutioncompressionandmulti-threadtechnologyaswellasvideofrequencygathering,thecompressionsolutioncompresstechniqueandsoon.ThissoftwarebasedontheSocketcorrespondence,basedonthis,realizeschats,thebroadcasttochat,onetomanytochatpoint-to-point,theintimateconversationandtheexpression,maymoveinanysupportstheTCP/IPagreementonthemachine.Withmulti-threaddesign,thereforebetweenthethreadsynchronizationisplaceofthebigkey.BecausethesystemusestheC/S(Client/Server)structure,theclientsideandtheclientsideaswellastheclientsideandtheserverendneedtotransmitsomecontrolmethods,thereforethesystemneedsfromdefinessomemessagetype,thisisanotherkeyofthischatroom.Keyword:Networkservice;Personalchats;Socket;JavaGUI目錄TOC\h\z\t"樣式7,1,樣式10,3,樣式12,2"引言 1第一章應用技術簡介 21.1Java語言簡介 21.2.J2EE平臺簡介 21.3網絡通信協議 21.3.1TCP/IP整體構架概述 21.3.1IP協議 31.3.1TCP協議及端口 31.4Socket與多線程 31.5JavaGUI 4第二章 系統分析 52.1對已有聊天軟件的分析 52.1.1功能分析 52.1.2網頁聊天室 52.1.3缺陷 52.2項目開發的主要內容 62.3項目開發的意義 62.4系統方案說明 62.5系統其他要求 72.5.1系統性能要求 72.5.2系統環境要求 72.6結構流程 82.6.1服務器結構流程圖 82.6.2客戶端結構流程圖 9第三章程序詳細設計 103.1聊天室服務器端設計 103.1.2服務器設計思想 103.1.2服務器端界面 113.1.3.服務器端各主要類的定義及其功能 113.1.4.服務器端用戶管理功能的設計與實現 123.1.5.服務器端顯示消息的功能設計與實現 123.2.聊天室客戶端設計 133.2.1.客戶端設計思想 133.2.2.客戶端界面 143.2.3.客戶端各主要類的定義及其功能 143.2.4.客戶端登陸的設計與實現 143.2.5.客戶端發送消息的設計與實現 143.2.6.客戶端顯示收到消息的設計與實現 15第四章系統測試 164.1測試目標 164.2測試過程 164.2.1服務器測試 164.2.2客戶端測試 194.3測試結果 21結論 22參考文獻 23謝辭 24PAGEPAGE23引言自從上世紀中葉第一臺計算機誕生以來,計算機越來越走進人們的生活當中,特別是隨著計算機網絡的發展,把全世界的人們緊密的聯系在一起,大大的擴展了計算機的功能,人們越來越離不開計算機了。如今,作為網絡應用之一的聊天工具,越來越受到人們的歡迎和重視。現在已有的聊天軟件和聊天工具不勝枚舉,流行的主要有QQ,ICQ,MSNMessage,NetMeeting,mIRC和郎碼UC和各種的網頁聊天室等。這些軟件特別是QQ升級很快,其功能是越來越來強大,將代表著聊天軟件的發展方向。目前,聊天軟件的功能除了最基本的文本聊天,已經可以語音聊天,圖像聊天,視頻聊天,文件傳輸等三維聊天,還發展了短信發送,無線聊天,在線游戲等功能,可以預見在不久的將來,聊天軟件將成為人們通過因特網相互聯系和娛樂的主要平臺。目前的聊天軟件以Web模式為主,但HTML作為一種樣式語言,HTML技術本身卻存在著諸多的缺陷,如它限制了交互式的選擇,創建和重復使用交互式組件也比較困難,使用不同的擴充有將導致兼容性問題。盡管在目前的Internet上,它充當了數據表示的主要角色。這種不協調在Internet發展的初期還沒有什么影響,但隨著Internet上信息量的增多和交互性的加強使HTML顯得越來越難以勝任。以Web服務器的傳送方式可分為靜態頁面和動態頁面。以HTML文件的形式傳送固定數據稱之為靜態網頁;對用戶的請求進行分析,并將結果聲稱其它代碼,利用客戶端進行傳送。此時,會生成以.cgi、.jsp、.asp等為擴展名的腳本程序文件,這些文件根據服務器腳本的分析結果會有所不同,稱之為動態網頁。單純的靜態頁面已經不能滿足發展的需要。因為靜態頁面是用單純的HTML語言組成的,它沒有交互性。而為了與上網的用戶產生交互的關系,隨后便發展出了如JavaScript、CGI、ASP、JSP等各種客戶端與服務器端的開發技術.JSP是第三代解決方案,它易于第二代解決方案相結合,創建動態內容,它使與其它各種技術相結合的以網絡為基礎的應用更容易和更快速的建立起來。這些技術包括:網絡服務器,網絡瀏覽器,應用服務器和其他開發工具。該畢業設計課題為基于C/S的應用Socket技術的聊天工具的設計與實現,它是在Socket通信和文本聊天的基礎上來實現一對一、一對多聊天。它要求該聊天軟件能夠自建服務器,被應用在一個個獨立的自治系統中,靈活性很大。第一章應用技術簡介1.1Java語言簡介Java是一種簡單易用、完全面向對象、具有平臺無關性且安全可靠的主要面向Internet的開發工具。Java平臺由Java虛擬機(JavaVirtualMachine)和Java應用編程接口(ApplicationProgrammingInterface、簡稱API)構成。Java應用編程接口為Java應用提供了一個獨立于操作系統的標準接口,可分為基本部分和擴展部分。在硬件或操作系統平臺上安裝一個Java平臺之后,Java應用程序就可運行。現在Java平臺已經嵌入了幾乎所有的操作系統。這樣Java程序可以只編譯一次,就可以在各種系統中運行。Java應用編程接口已經從1.1x版發展到1.2版。目前常用的Java平臺基于Java1.4,最近版本為Java1.6。1.2.J2EE平臺簡介J2EE是美國Sun公司剛剛推出的一種全新概念的模型,與傳統的互聯網應用程序模型相比有著不可比擬的優勢。目前,Java2平臺有3個版本,它們是適用于小型設備和智能卡的Java2平臺Micro版(Java2PlatformMicroEdition,J2ME)、適用于桌面系統的Java2平臺標準版(Java2PlatformStandardEdition,J2SE)、適用于創建服務器應用程序和服務的Java2平臺企業版(Java2PlatformEnterpriseEdition,J2EE)。J2EE是一種利用Java2平臺來簡化企業解決方案的開發、部署和管理相關的復雜問題的體系結構。J2EE技術的基礎就是核心Java平臺或Java2平臺的標準版,J2EE不僅鞏固了標準版中的許多優點,例如“編寫一次、隨處運行”的特性、方便存取數據庫的JDBC(JavaDataBaseConnectivity)應用程序接口(API,ApplicationProgramInterface)技術以及能夠在Internet應用中保護數據的安全模式等等,同時還提供了對EJB(EnterpriseJavaBeans)、JavaServletsAPI、JSP(JavaServerPages)以及XML技術的全面支持。其最終目的就是成為一個能夠使企業開發者大幅縮短投放市場時間的體系結構。1.3網絡通信協議1.3.1TCP/IP整體構架概述TCP/IP協議并不完全符合OSI的七層參考模型。傳統的開放式系統互連參考模型,是一種通信協議的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。而TCP/IP通訊協議采用了4層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。這4層分別為:

應用層:應用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等。

傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(TCP)、用戶數據報協議(UDP)等,TCP和UDP給數據包加入傳輸數據并把它傳輸到下一層中,這一層負責傳送數據,并且確定數據已被送達并接收。

互連網絡層:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。

網絡接口層:對實際的網絡媒體的管理,定義如何使用實際網絡(如Ethernet、SerialLine等)來傳送數據。1.3.1IP協議IP網絡中每臺主機都有唯一的IP地址,IP地址用戶標識網絡中的每個主機。IP地址是一個32為的二進制數序列。為了便于在上層應用中方便地表示IP地址,可以把32位的二進制數序列分為4個單元,每個單元占8位,然后用十進制整數來表示每個單元,這些十進制整數的取值范圍是0~255。如某主機的IP地址可以是。IP地址由兩部分組成:IP網址和IP主機地址。IP網址表示網絡的地址,IP主機地址表示網絡中的主機的地址。網絡掩碼用來確定IP地址中哪部分是網址,哪部分是主機地址。1.3.1TCP協議及端口IP協議在發送數據包時,途中會遇到各種事情。例如,可能路由器突然崩潰,使包丟失。又如,一個包可能沿低速鏈路移動,而另一個包可能沿高速鏈路移動而超過前面的包,最后使得包的順序搞亂。TCP協議使兩臺主機上的進程順利通信,不必擔心包丟失或包順序搞亂。TCP跟蹤包順序,并且在包順序搞亂時按正確順序重組包。如果包丟失,則TCP會請求源主機重發包。1.4Socket與多線程Socket是建立在TCP/IP協議基礎之上,可以看作是通信連接兩端的收發器,服務器與客戶都通過Socket來收發數據。除了Socket的第一個不帶參數的構造方法以外,其他構造方法都會試圖建立于服務器的連接,如果連接成功,就返回Socket對象;如果因為某些原因連接失敗,就會拋出IOException。當客戶請求于服務器程序連接時,可能要等待一段時間。默認情況下,客戶會一直等下去,直到連接成功,或者出現異常。如果希望限定等待連接的時間,可以通過connect(SocketAddressendpoint,inttimeout)方法來設置超時時間,以毫秒為單位。在通信過程中,如果發送方沒有關閉Socket,就突然終止程序,接收方在接收數據時會拋出SocketException。發送方發送完數據后,應該及時關閉Socket或關閉Socket的輸出流,這樣,接收方就能順利讀到輸入流的末尾。多線程函數是Win32的一個重要方面,其編程技術較為新穎,在程序設計思路上不同于傳統的模塊結構化方法,比一般的面向對象的思路也較為復雜,尤其是對于多處理器平臺的處理更為復雜。要設計出性能良好的多線程程序,不僅需要對操作系統的處理過程很清楚,還需要對具體應用有一個全面的認識,并對應用中各線程部分的關系非常清楚,對同步模塊中的同步對象的具體含義應盡可能地清晰明了,以利于在程序中控制同步事件的發生,避免出現死鎖或不能同步處理的現象。線程的創建比較簡單,可以利用CreateThread或者AfxBeginThread來實現,終止線程可以用TerminateThread來實現。線程只見信息的共享可以利用全局變量來實現或者消息函數來實現。多線程的設計關鍵之處在于線程之間的同步。1.5JavaGUI為了方便用Java構建圖形用戶界面,Sun最初提供了一個在所有平臺下具有的獨特Java外觀的圖形界面庫。Sun在applet技術策略方面的首要伙伴Netscape提出applets應該維持和運行時平臺一樣的外觀。他們希望applets在某一平臺下在顯示和行為上能夠像其他應用程序一樣。為了實現Netscape的"本地外觀"的目標,在JDK的第一個發布版中包含了AWT這個庫。AWT的缺省實現使用了"對等"機制,即每一個Java

GUI窗口部件都在底層的窗口系統中有一個對應的組件。第二章 系統分析2.1對已有聊天軟件的分析如今,聊天軟件種類繁多,發展迅速。下面簡要的對已有的聊天軟件作一下總結分析。2.1.1功能分析作為如今流行的聊天軟件之一QQ,功能已經非常強大,基本上朝著三個大的方向發展,即個人及時通信,企業實時通信和娛樂資訊。它的功能主要有:(1)個人文本聊天(2)個人語音聊天(3)個人視頻聊天(4)圖像傳輸(5)文件傳輸(6)在線游戲(7)聊天室聊天(8)隱身,上線(9)群聊天(10)企業級實時通信聊天軟件的發展方向是三維化,人性化,綜合化。2.1.2網頁聊天室作為另一種聊天軟件形式,網頁聊天室也受到用戶的普遍歡迎。網頁聊天室的優點就是很好的利用了瀏覽器的功能,用戶不需要安裝任何新的軟件,即可加入聊天室聊天。現在的網頁聊天室除了文本聊天之外,語音聊天也很常見。由于其客戶端的簡化,其功能必然受到限制。2.1.3缺陷不管是QQ,還是網頁聊天室,其最大的缺陷就是服務器固定,用戶必須連接上服務器。如果想在一個自治系統之內(一個孤立的網絡)通信,NetMeeting是一款不錯的軟件。它服務器有很強的靈活性,任何用戶都可以建立自己的服務器。2.2項目開發的主要內容設計并實現基于Socket的文本聊天程序包括廣播聊天,二人私聊。涉及的內容包括用戶登錄,聊天方式的選擇,附帶表情,以及悄悄話選項。管理員身份可以看到私聊的和內容。由一個管理員運行ChatRoomServer建立主機服務器,其他用戶運行ChatRoomClient運行客戶端,通過服務器的IP和設置的端口號與之建立連接。在服務器端可以顯示用戶登錄的信息,客戶端可以看見當前在線用戶的人數和昵稱。在由于開發目的的原因,所以不采用登錄驗證模式,只要輸入用戶昵稱即可登錄,對惡意刷屏或語言不禮貌者,管理員可以請離該用戶。2.3項目開發的意義本項目是作為本科的畢業設計課題提出來的,它規模適中,適合于個人開發,能夠鍛煉同學的學習新知識能力,鍛煉同學的編程能力,鍛煉同學的軟件工程的思維方式。它的具體意義如下:(1)目前,計算機的發展離不開網絡這一方向,網絡將大大擴展計算機的功能,研究計算機在網絡方面的技術以及應用,挖掘計算機的網絡潛能,將能夠大大提高我們對計算機的本身的認識,同時也能加深對計算機網絡的認識。(2)網絡的一大應用就是用于用戶之間聯絡的聊天工具,通過對聊天工具的開發,我們將了解計算機如何通過網絡相互通信以及在此相互通信的基礎上實現的應用程序級的協議。(3)C/S結構的優勢在不依賴于瀏覽器,可以在任何操作系統中運行。而且客戶端也可以進行復雜的業務邏輯。這些都是B/S系統所無法達到的。2.4系統方案說明網絡聊天室涉及的一個服務器端和N個客戶端。客戶向服務器發送請求,服務器對請求作出響應。客戶嘗試與服務器建立連接。一旦連接建立起來,客戶和服務器就可以通過套節字進行通信。本系統中,主要有兩個應用程序,分別為服務器程序和客戶端程序。用程序主要用于消息轉發、客戶登陸信息的管理以及向所有用戶發送系統消息等;客戶端應用程序主要用于客戶聊天記錄的顯示和信息輸入。本系統采用C/S(Client/Server)體系結構(見圖2-1),即客戶機/服務器體系結構。其特點是客戶端只裝載應用軟件,而把復雜的消息處理、用戶監控等放在服務器端實現,這樣就可以大大簡化客戶端軟件。ServerServerClientClientClientClient圖2-1C/S體系結構圖其大致實現模型是:(1)服務器分配一個端口號。一旦服務器啟動,既使用ListenThread線程對端口進行不間斷監聽.如果客戶請求一個連接,服務器使用accept()方法打開一個socket連接。(2)客戶在host和port端口建立連接。(3)服務器和客戶端使用InputStream和OutputStream進行通信。2.5系統其他要求2.5.1系統性能要求(1)時間特性對于公共聊天和聊天室聊天,要求響應每條消息的時間不超過1秒鐘,否則用戶將感到這個聊天工具反應遲鈍。對于二人文本私聊,要求響應每條消息的時間不超過500ms,這樣使得二人私聊能夠有種當面聊天的感覺。(2)靈活性要求該聊天工具能夠適用于多種協議上,而且能夠在任意個自治系統之內使用,要求服務器自建非常靈活。2.5.2系統環境要求(1)硬件要求:安裝了網卡,并連入局域網。(2)軟件要求:Windows98以上的系統;安裝了支持Socket通信的TCP/IP或者協議;JDK1.4以上版本。2.6結構流程2.6.1服務器結構流程圖服務器啟動服務器啟動處于監聽狀態客戶端登錄處理群聊請求客戶端下線服務器退出處理表情請求處理私聊請求圖2-2服務器結構流程圖2.6.2客戶端結構流程圖客戶端啟動客戶端啟動客戶端退出發送私聊請求發送聊天請求發送表情請求 圖2-3客戶端結構流圖第三章程序詳細設計網絡聊天室涉及的一個服務器端和N個客戶端。客戶向服務器發送請求,服務器對請求作出響應。客戶嘗試與服務器建立連接。一旦連接建立起來,客戶和服務器就可以通過套節字進行通信。3.1聊天室服務器端設計服務器端是整個聊天室的主要部分,它包含了客戶端接入以及處理其發出請求的一系列方法,是整個聊天是的核心,客戶發送的信息也是通過服務器發送到其他用戶的。3.1.2服務器設計思想作為服務器設計,需要考慮以下幾點問題:(1)安全性服務器的安全性包括兩部分,一是服務器本身軟硬件配置上的安全性,比如防止系統漏洞;二是服務器和客戶端通訊協議的安全性設計,防止通過協議本身導致服務器被非法攻擊等。(2)并發服務能力主要是線程間的鎖控制。涉及到鎖控制的,主要是因為共享問題。共享分為兩種:一是代碼共享部分;一是數據共享部分。其中做主要的還是數據共享部分。但是沒有什么好的解決辦法,唯一的辦法就是檢查這個共享是不是真正必要的,這些數據可不可以分成兩部分以形成不是共享的。(3)性能的可線性提高這主要指服務器的服務能力可以通過增加線程的方式線性提高性能。這就要求服務器的服務能力分擔是均衡的,即實現良好的負載平衡。3.1.2服務器端界面圖3-1服務器端界面3.1.3.服務器端各主要類的定義及其功能ChatServer:這個類是服務器端程序運行的入口,運用Swing圖形界面定義了服務器的主界面,其中包含一個主窗體、若干個容器、按鈕、輸入框和文本顯式框。jbInit()方法是使整個圖形界面初始化。同時還有startServer()和stopServer()兩個方法,當運行startServer()這個方法時就會創建個ServerSocket對象并設定8000端口號。運行stopServer()方法會關閉ServerSocket斷開連接,請離用戶的KickOut發法也定義在這個方法中。Node:此類為用戶節點類,其對象實例用戶唯一標識一個用戶,只有屬性沒有方法,并創建了一個自身的引用。ServerListenThread:這個類繼承了Thread線程類,主要的方法也是重寫父類的main()方法。方法中定義了個while循環讓ServerSocket一直處于監聽狀態,直到boolnean類型的isstop為false時,也就是服務器關閉是退出。并控制輸入輸出流來顯式上線下線的信息發送到每個客戶端。UserInfoList:這個類是針對Node類也就是定義的用戶進行操作,其中有增加用戶的add()方法、刪除用戶的del()方法、指定id或name的兩個Find()方法以及獲所有用戶數的getCount()方法。SendMessageToAll:這個類用于向所有客戶端發送信息,實現方法是sendMsgToAll,它有兩個參數,一個是用戶UserInfoList,和要發送的消息M。通過輸入輸出流來控制并通過網絡傳輸的。ServerReceiveThread:它繼承了Thread線程類,用于獲取客戶端發來的信息并作適當的處理,在向客戶端發送消息之前對要發的消息進行適當的加工。如客戶端發出悄悄話請求時,這個類會調用方法在所發送的消息前加上“悄悄對你說”。3.1.4.服務器端用戶管理功能的設計與實現由于客戶端承載著與客戶端之間和客戶端相互之間交流的重要任務,所有對所有用戶端進行管理功能的實現很重要。在這個功能中是通過定義Node和UserInfoList這兩個類來實現的當服務器端接到一個客戶端的請求時,服務器端就會初始化一個Node節點作為客戶端,Node類中出了有起必須的一些用戶名、輸入輸出流等屬性外,還定義了其自身的引用Nodenext,作用是把客戶端設計成一個鏈表,通過next這個屬性讓他們連接起來,這樣做的優點是不需要再定義List或者Map來存放客戶端結點,只需在Node中增加一個屬性就能實現,使其性能有很大的提高。UserInfoList中定義了對Node進行增加、刪除、查找和返回其數目的方法,通過Node的next屬性遍歷所有的客戶端。在整個的聊天室實現中客戶端管理模塊起到了基礎的支持,無論是發送消息、上線下線和悄悄話都是調用UserInfoList中的方法來確定對哪個客戶端進行操作的。Node對象是存放在內存中的,當ServerSocket關閉的時候會釋放資源,Node結點失效。3.1.5.服務器端顯示消息的功能設計與實現服務器端作為所有消息的中轉站和系統消息發出站,對消下的處理也是相當重要的一個環節,如果失去了消息發送消息的功能,聊天室也就是去了存在的意義。首先在客戶Node類中定義了兩個屬性,分別是ObjectOutputStream和ObjectInputStream,這是java語言的輸入輸出流,應用于所有信息的傳遞,可以輸入輸出對象、數據、字符串等等。首先ServerListenerThread會捕獲到客戶端的請求,然后引用Node類并調用OutputStream方法發送消息。ServerReceiveThread會接收到請求并判斷是何種類型,是群聊還是悄悄話,是什么樣的表情,服務器會對其進行加工,加上所需要的提示信息和用戶名,如果是群聊,則調用SendMessage中的SendMsgToAll發送到每一個客戶端。期間會調用UserInfoList來獲取所有用戶。客戶端獲得消息后調用服務器中定義的Node類中的OutputStream將接收并顯示到圖形界面中的文本輸出框,群聊功能就實現了。如果是私聊,UserInfoList會根據用戶名查找是哪個用戶,再調用SendMessage方法將消息發送到指定客戶端。如果是服務器端發送消息則會在發送之前加入“[系統消息]”后再調用SendMessageToAll方法發送到每個客戶端。客戶端程序通過輸入流獲取到信息后進行判斷并作相應的處理。在字符串前面加上適當的說明信息之后條用textarea.append()方法將信息輸出到主界面上。3.2.聊天室客戶端設計客戶端中定義了客戶的主界面以及發送消息、接收消息等方法。它繼承了Thread線程類,因而多個客戶端可以并發執行且不受影響。3.2.1.客戶端設計思想服務器的作用就是為了滿足客戶端的要求。客戶端作為大眾群體,地位也是非常重要,其權限沒有服務器高。在客戶端的設計中只需加入客戶端住界面和接收發送信息的線程以及一些對基本字符串的處理,其他復雜的功能由服務器完成。3.2.2.客戶端界面 圖3-2客戶端界面3.2.3.客戶端各主要類的定義及其功能ChatClient:客戶端的主函數就在這個類中。login方法是用于用戶登錄的,不需要事先注冊,用戶名不為空即可登錄。之外還有logout下線以及發送信息的方法。客戶端的主界面的初始化寫在jbinit方法中,和服務器端界面類似,它由一個panel和若干個按鈕和textArea組成,這些Swing組件與服務器端的監聽器相連。3.2.4.客戶端登陸的設計與實現本程序登錄是不需要驗證的,如果用戶不是系統的提示信息或者已存在的用戶名則登錄成功。登錄功能中首先實例化一個Socket,傳入本機的IP地址和要連接服務器的端口號服務器建立連接,如服務器未開啟則拋出異常并在主界面的文本框中顯式。然后從socket對象獲取輸入流,實例化用戶線程并啟用。3.2.5.客戶端發送消息的設計與實現發送消息是由SendMessage方法來完成的。該方法首先獲得要發送的內容和對象。如果是悄悄化則加上status字符串。然后把提示信息、聊天的對象、聊天方式、表情和聊天內容依次通過輸出流發送給服務器端,發送一條清空一次緩存,服務器端會根據接收到的內容作相應的處理。3.2.6.客戶端顯示收到消息的設計與實現在接收消息模塊中定義了一個while循化,只要用戶沒有下線或與服務器的連接沒有斷開則消息一直處于接收狀態。當輸入流讀取到服務器發送的消息后用if條件語句判斷是何種類型的信息,并對其做加上相應的類型提示信息的處理。最后送交主界面的textArea進行顯示。第四章系統測試4.1測試目標各模塊整合良好,功能能夠正常使用。客戶端與服務器端的通信正常,不會出現漏發、錯發、亂碼等問題。客戶端登錄的用戶名不會出現重復且不能為空。用戶下線則斷開于服務器的連接,不會占用網絡資源。悄悄話功能能夠正常使用,只有悄悄話的對象和服務器能夠看到其內容。服務器斷開連接或連接以外中斷是當時能夠將正確的提示信息顯示到客戶端,不會造成死機或其他異常情況。4.2測試過程4.2.1服務器測試(1)服務器開啟圖4-1服務器開啟(2)顯示群聊信息 圖4-2顯示群聊信息(3)顯示私聊信息圖4-3顯示私聊信息(4)請離用戶圖4-4請離用戶(5)關閉連接圖4-5關閉連接4.2.2客戶端測試(1)用戶登錄圖4-6用戶登錄(2)發送、接收消息圖4-7客戶端發送接收消息(3)私聊圖4-8私聊(4)客戶端下線圖4-9客戶端下線4.3測試結果網絡條件正常的情況下服務器與客戶端可以建立連接。客戶端能夠正常登錄。群聊和悄悄話功能正常實現且能夠及時的發送信息,響應時間小于500ms。各提示信息準確無誤。服務器斷開連接時客戶端能夠及時響應且沒有發生異常。結論該項目從設計、規劃、編碼、運行到測試已經完成所有的研究項目。整個研究開發過程中,是一個不斷摸索不斷創新的過程。其開發過程大致可以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論