CS架構(gòu)的Java即時聊天系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
CS架構(gòu)的Java即時聊天系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 7/7CS架構(gòu)的Java即時聊天系統(tǒng)的設(shè)計與實現(xiàn) 畢業(yè)設(shè)計論文 C/S架構(gòu)的即時聊天系統(tǒng)的設(shè)計與實現(xiàn) The Instant Messaging System based on C/S Structure Abstract: With the rapid development of the information age, especially the rise of internet technology, more and more people tend to communicate and deliver the messages through the internet.Inst

2、ant messaging system is such a widely used medium. With it,the real-time dialogue and file transfer can be easily carried out. Taking the design and development of the instant messaging system as the background , this article describes in detail the process of developing software systems with Java a

3、nd MySql. The realization of the system is based on the TCP / IP communication protocol, and uses a client / server mode .Many advanced java technologies such as Swing ,java multi-threading, JDBC, socket programming and so on are used. By directly using the ServerSocket ,ObjectInputStream and other

4、classes supported in Java API, messages sented by the client and server side are packaged into a uified data stream in order to achieve the exchange of messages. The whole development process of this system follows software engineering methods,and instant messaging, group chatting, file transferring

5、 and other functions are realized. Keywords: Java; database; Socket programming; instant messaging system; TCP/IP protocol 目錄 第一章引言 (1) 1.1選題背景和意義 (1) 1.2本文的主要工作 (2) 第二章基于C/S架構(gòu)的即時通訊系統(tǒng)概述 (3) 2.1系統(tǒng)的可行性分析 (3) 2.2系統(tǒng)的實現(xiàn)目標和基本功能 (4) 2.3系統(tǒng)開發(fā)環(huán)境和關(guān)鍵技術(shù)介紹 (4) 第三章基于C/S架構(gòu)的即時通訊系統(tǒng)設(shè)計 (8) 31系統(tǒng)詳細設(shè)計 (8) 311 系統(tǒng)總體流程圖 (8)

6、312 系統(tǒng)總體功能模塊劃分 (9) 313 系統(tǒng)用例圖 (10) 314 系統(tǒng)數(shù)據(jù)流圖 (12) 3.2 數(shù)據(jù)庫設(shè)計 (14) 3.3 系統(tǒng)關(guān)鍵類結(jié)構(gòu)設(shè)計 (19) 第四章基于C/S架構(gòu)的即時通訊系功能實現(xiàn) (24) 4.1注冊模塊功能實現(xiàn) (24) 4.2登錄模塊功能實現(xiàn) (26) 4.3聊天模塊功能實現(xiàn) (29) 4.4文件傳送模塊功能實現(xiàn) (31) 4.5后臺管理模塊功能實現(xiàn) (35) 第五章總結(jié) (39) 致謝 (42) 第一章引言 1.1選題背景和意義 隨著經(jīng)濟全球化的發(fā)展,世界各地的不同人、組織、機構(gòu)之間的聯(lián)系越來越密切。同時伴隨著互聯(lián)網(wǎng)技術(shù)的普及和發(fā)展,網(wǎng)絡(luò)即時通信工具已經(jīng)作為

7、一種廉價、方便的信息交流工具越來越受到人們的青睞。在21世紀初的短短十幾年間,即時通信系統(tǒng)(IM)的發(fā)展不斷地取得了驚人的成就。從早期只能互相發(fā)送字符并顯示在雙方的屏幕上的實時通信程序到現(xiàn)在的圖形化、面向互聯(lián)網(wǎng)、多功能的即時通信系統(tǒng),科學(xué)技術(shù)的進步和整合不斷地促使著即時通信系統(tǒng)功能越來越豐富,用處越來越廣泛。從最早的即時通訊軟件ICQ誕生至今,市場上不斷涌現(xiàn)出類似的產(chǎn)品。不少廠商分別推出了自己的IM,如騰訊、阿里旺旺、新浪UC、移動飛信等,這些都是我們所熟悉的PC端的即時通訊軟件。隨著智能手機、平板電腦的普及,一些移動端的即時通信系統(tǒng)也如雨后春筍般涌現(xiàn)出來,如小米公司的米聊,騰訊公司的微信,還

8、有年輕人之間很流行的陌陌、游戲玩家常用的YY語音等。這些軟件本身功能也越來越豐富,遠遠超出了單純的即時聊天系統(tǒng)的范疇。現(xiàn)在的即時通信系統(tǒng)不僅僅是人們的溝通工具,還成為了人們利用其進行電子商務(wù)、工作、學(xué)習(xí)等交流的平臺1516。 在當(dāng)今社會,不管是個人用戶還是企業(yè)用戶,對溝通的需求總是在不斷地發(fā)展。傳統(tǒng)的溝通交流方式如電話、傳真、郵件等已經(jīng)不能完全滿足人們學(xué)習(xí)、工作、生活的需要。隨著計算機軟件、計算機網(wǎng)絡(luò)和移動通信技術(shù)的發(fā)展融合,集方便、廉價、快捷、實時等優(yōu)點于一身的即時通訊系統(tǒng)可以說是繼電子郵件、萬維網(wǎng)之后,互聯(lián)網(wǎng)上最具有殺傷力的應(yīng)用。很難想象一臺個人電腦沒有安裝像 這樣的即時通訊軟件。雖然即時

9、聊天系統(tǒng)設(shè)計的初衷是聊天,但正如前面所說,其功能已經(jīng)超出了聊天的范疇,隨著企業(yè)即時通訊工具(EIM)的出現(xiàn),IM系統(tǒng) 更是成了企業(yè)信息發(fā)布、資源共享、問題探討和網(wǎng)絡(luò)營銷的一把利器。通過現(xiàn)有的技術(shù),企業(yè)完全可以摒棄通用的免費的即時通訊系統(tǒng),轉(zhuǎn)而根據(jù)自己企業(yè)的需求定制開發(fā)自己專屬的內(nèi)部即時通訊系統(tǒng),以實現(xiàn)更好的管理,提高員工的工作效率。我們的生活中溝通無處不在,即時聊天系統(tǒng)這類廣泛使用的基礎(chǔ)軟件的研究開發(fā)意義深遠15。 1.2本文的主要工作 本文圍繞一個簡單實用的即時聊天系統(tǒng)的開發(fā),詳細介紹了使用Java編程語言、Java API和MySQL數(shù)據(jù)庫構(gòu)建一個軟件系統(tǒng)的過程。整個系統(tǒng)的分析、設(shè)計、開發(fā)

10、、測試等過程遵循了軟件工程學(xué)的方法。論文分為如下幾個部分: 第一部分,闡述了對即時聊天系統(tǒng)的分析。包括系統(tǒng)的可行性分析、系統(tǒng)實現(xiàn)的目標和基本功能分析以及使用的一些關(guān)鍵技術(shù)分析。 第二部分,闡述了整個系統(tǒng)的設(shè)計過程。包括系統(tǒng)總體設(shè)計、功能模塊劃分、數(shù)據(jù)庫設(shè)計和關(guān)鍵類的設(shè)計。 第三部分,詳細介紹了整個系統(tǒng)的實現(xiàn)。針對每一個功能的具體實現(xiàn)展開介紹,包括使用到的開發(fā)技術(shù)、類庫,第三方j(luò)ar包等等。 第四部分,總結(jié)與展望。針對系統(tǒng)的優(yōu)點和不足對系統(tǒng)進行了總結(jié)與展望。 第二章基于C/S架構(gòu)的即時通訊系統(tǒng)概述 2.1系統(tǒng)的可行性分析 進行可行性研究就是在行動以前,對要辦的事進行調(diào)查,確認其可行與不可行,即:

11、可行則行,不可行則止。可行性研究的目的不是解決問題,而是研究在當(dāng)前的具體條件下,開發(fā)新系統(tǒng)是否具備必要的資源和其它條件。為了達到這個目的,必須認真了解用戶的要求及現(xiàn)實環(huán)境,探索若干種可供選擇的解絕方案,并對每種解決方案的可行性進行仔細論證。一般來說應(yīng)從以下幾個方面進行論證12: 技術(shù)可行性:使用現(xiàn)有的技術(shù)能是否實現(xiàn)這個系統(tǒng) 經(jīng)濟可行性:這個系統(tǒng)的經(jīng)濟效益是否超過它的開發(fā)成本 操作可行性:系統(tǒng)的操作方式在這個用戶組織內(nèi)是否行得通在對本系統(tǒng)的分析中,同樣是從上面三個方面入手。本系統(tǒng)的可行性分析包括以下幾個方面的內(nèi)容: (1)技術(shù)可行性:基于網(wǎng)絡(luò)通信原理,利用Java提供的Swing、Socket等

12、API和多線程編程、JDBC等技術(shù)可以開發(fā)出簡單實用美觀的即時聊天系統(tǒng),因此技術(shù)上是可行的。(2)經(jīng)濟可行性:個人電腦和網(wǎng)絡(luò)的普及使得我們不需要太多的經(jīng)濟投入。在軟件方面,可以采用免費的IDE如Eclipse和輕量級數(shù)據(jù)庫MySQL。無需太多的經(jīng)濟投入即可為局域網(wǎng)內(nèi)的即時通訊系統(tǒng)的實現(xiàn)提供支持。 (3)操作可行性:一方面可以讓本地機同時作為客戶端和服務(wù)器實現(xiàn)一臺機器上的即時通訊。另一方面,只要一臺以上計算機連接在同一個局域網(wǎng)內(nèi),并且在作為客戶端機器的本系統(tǒng)中設(shè)臵需要連接的作為服務(wù)器端機器的IP地址,本系統(tǒng)就可以實現(xiàn)局域網(wǎng)通訊,所以操作上完全不存在問題。如果要實現(xiàn)internet上通訊,理論上只

13、需要將服務(wù)器端運行在一個有固定IP的公網(wǎng)上就可以。 綜上所述,這種C/S架構(gòu)的即時通訊系統(tǒng)的開發(fā)是可行的。 2.2系統(tǒng)的實現(xiàn)目標和基本功能 對于個人用戶而言,能夠?qū)崿F(xiàn)好友即時通訊,傳遞實時信息,讓用戶隨時隨地都可與好友保持暢快有效的溝通。 對于企業(yè)用戶而言,能夠?qū)崿F(xiàn)建立員工交流平臺,統(tǒng)一信息發(fā)布平臺,減少運營成本,促進企業(yè)辦公效率。 商業(yè)即時通訊系統(tǒng)的功能越來越多樣化,一些功能也很新穎,如現(xiàn)在流行的語音對講功能。本系統(tǒng)不比商業(yè)系統(tǒng),沒有考慮過多的復(fù)雜性,主要實現(xiàn)了基本的通訊功能,以滿足學(xué)習(xí)研究之用。其基本功能有用戶注冊、客戶端登錄、一對一實時聊天、群組聊天、傳送文件、服務(wù)器后臺管理。 2.3系

14、統(tǒng)開發(fā)環(huán)境和關(guān)鍵技術(shù)介紹 (1)Java語言簡介 Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于個人PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計算機、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java 更具備了顯著優(yōu)勢和廣闊前景18。 Java之所以被開發(fā),是要達到以下五個目的2: ?應(yīng)當(dāng)使用面向?qū)ο蟪绦蛟O(shè)計方法學(xué)

15、?應(yīng)當(dāng)允許同一程序在不同的計算機平臺執(zhí)行 ?應(yīng)當(dāng)包括內(nèi)建的對計算機網(wǎng)絡(luò)的支持 ?應(yīng)當(dāng)被設(shè)計成安全地執(zhí)行遠端代碼 ?應(yīng)當(dāng)易于使用,并借鑒以前那些面向?qū)ο笳Z言(如C+)的長處。 Java語言有著簡單、面向?qū)ο蟆⒎植际健⒔选踩⒖梢浦驳忍匦裕虼耸艿搅吮姸喑绦蜷_發(fā)人員的青睞。 (2)Eclipse簡介 Eclipse是著名的跨平臺開源集成開發(fā)環(huán)境(IDE)。它是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。人們最初主要用它來做Java語言開發(fā),目前亦有人通過插件使其作為C+、Python、PHP等其他語言的開發(fā)工具。Ecli

16、pse本身就是用Java語言開發(fā)的,它的設(shè)計思想是:一切皆是插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本內(nèi)核包括:圖形API (SWT/Jface),Java開發(fā)環(huán)境插件(JDT ),插件開發(fā)環(huán)境(PDE)等。這些特性使得Eclipse擁有較佳的靈活性,許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE13。 (3)MySql簡介 MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB公司開發(fā),目前屬于Oracle公司。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣

17、就增加了速度并提高了靈活性。與其他的大型數(shù)據(jù)庫例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規(guī)模小、功能有限等,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。MySQL軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。本系統(tǒng)采用的后臺數(shù)據(jù)庫即為社區(qū)版7。(4)網(wǎng)絡(luò)通信協(xié)議簡介 網(wǎng)絡(luò)通信協(xié)議為連接不同操作系統(tǒng)和不同硬件體系結(jié)構(gòu)的互聯(lián)網(wǎng)絡(luò)

18、提供通信支持,是一種網(wǎng)絡(luò)通用語言。網(wǎng)絡(luò)通信的層次結(jié)構(gòu)和網(wǎng)絡(luò)通信的協(xié)議,是開發(fā)網(wǎng)絡(luò)程序的基礎(chǔ)。目前在網(wǎng)絡(luò)編程方面最常用的是TCP/IP和UDP通信協(xié)議。通過這些協(xié)議,網(wǎng)絡(luò)通信的 各主機可以用一種統(tǒng)一而非雜亂的規(guī)范,高效便捷地相互發(fā)送和接收消息。本系統(tǒng)在通訊功能實現(xiàn)中采用了TCP傳輸協(xié)議,直接使用的Java API提供的類Socket和Serversocket 等來實現(xiàn)69。 ?TCP傳輸協(xié)議說明 TCP協(xié)議是面向連接的協(xié)議,比如說在客戶端A和B進行連接之前必須首先建立數(shù)據(jù)通路,就向打電話一樣,在通話之前必須先撥號,等待對方的接聽以后才能進行通話。TCP協(xié)議中數(shù)據(jù)傳輸采取的是同步方式,當(dāng)數(shù)據(jù)發(fā)送到

19、對方時,必須等待接收方的應(yīng)答信號后才能繼續(xù)下一次的發(fā)送工作,即通常所講的三次握手。由于TCP協(xié)議采用的是這種連接方式,因此由它建立的連接是可靠的。在網(wǎng)絡(luò)不是十分理想的情況下,速度犧牲很大,但是卻能夠保證所傳輸?shù)臄?shù)據(jù)的正確性。 ? UDP傳輸協(xié)議說明 UDP協(xié)議采用的是面向無連接的通信方式,它在通信前不需要提前建立通信鏈路,它是異步的,數(shù)據(jù)的發(fā)送比較迅速,不需要等待應(yīng)答信號。優(yōu)點是發(fā)送速度較快,但是在數(shù)據(jù)的一致性方面不好,在網(wǎng)絡(luò)差的情況下,容易丟失數(shù)據(jù)包。另外,使用UDP傳輸數(shù)據(jù)時對數(shù)據(jù)是有大小限制的,每個被傳輸?shù)陌仨毾薅ㄔ?4KB之內(nèi)6。 ?Java Socket(套接字)說明 在Java語

20、言里,使用Socket(套接字)模型來封裝網(wǎng)絡(luò)傳輸?shù)木唧w動作。Java提供了Socket的相關(guān)包,Java中Socket的設(shè)計采用了面向?qū)ο蟮乃悸罚M了TCP協(xié)議里客戶端和服務(wù)器端的通信流程,并封裝了創(chuàng)建連接、發(fā)送接收數(shù)據(jù)流、斷開連接等方法。所以,使用Socket包,程序員不僅可以創(chuàng)建客戶端和服務(wù)器之間的通信信道,還能實現(xiàn)發(fā)送和接收數(shù)據(jù)流等的網(wǎng)絡(luò)通信功能。 針對一個特定的連接和通信過程,服務(wù)器和客戶端程序里都有一個Socket對象,我們可以想象一下其場景,在通信過程中,有一條虛擬的“光纜”構(gòu)架在服務(wù)器和客戶端之間,光纜的兩頭都插在了Socket這“插座”里。事實上,Java采用Socket包

21、是對TCP協(xié)議的進一步抽象,更向程序員屏蔽了TCP通信的細節(jié),具體表現(xiàn)在以下兩方面 9。 ?在使用Socket類里的方法建立信道的時候,Socket類屏蔽了通過三次握手建立信道的全部流程,直接向程序員返回信道類的句柄(Socket類的實例)或是出錯信息。 ? Socket類向程序員屏蔽了服務(wù)器和客戶端之間的物理硬件指標和底層的連接方式,所以我們在使用Socket類開發(fā)網(wǎng)絡(luò)程序時,可以簡單地調(diào)用其提供的方法來傳輸數(shù)據(jù),而不必關(guān)心數(shù)據(jù)流的傳輸和接收方式6。 Java中的Socket通信流程如圖2-1所示。 第三章基于C/S架構(gòu)的即時通訊系統(tǒng)設(shè)計31系統(tǒng)詳細設(shè)計 3.1.1 系統(tǒng)總體流程圖 在系統(tǒng)開

22、發(fā)之前,先對系統(tǒng)進行了整體設(shè)計,系統(tǒng)流程圖如圖3-1。 圖3-1系統(tǒng)總體流程圖 3.1.2 系統(tǒng)總體功能模塊劃分 本系統(tǒng)主要分為注冊、登錄、聊天、文件傳送、后臺管理五大模塊。整個系統(tǒng)的詳細結(jié)構(gòu)如圖3-2所示。 圖 3-2 系統(tǒng)總體功能模塊劃分 各個功能模塊設(shè)計如下: 1、注冊模塊 在登錄界面上有注冊按鈕,用戶可以點擊注冊,填入個人相關(guān)資料,提交給服務(wù)器。服務(wù)器接收到信息后通過純JDBC方式或者JDBCODBC橋接的方式連接數(shù)據(jù)庫并添加記錄。 2、登錄模塊 用戶在客戶端輸入賬號和密碼,然后建立與服務(wù)器端的連接,告訴服務(wù)器執(zhí)行登錄操作。服務(wù)器收到后,開始通過JDBC讀取數(shù)據(jù)庫,然后與用戶輸入的信息

23、進行比對,如果成功,便打開主程序窗口。然后客戶端向服務(wù)器請求讀取好友列表,服務(wù)器收到該 請求后從數(shù)據(jù)庫中取出該用戶的好友列表,然后向客戶端發(fā)送這些信息,客戶收到后就在主窗口顯示好友。 3、實時聊天模塊 客戶端首先發(fā)送消息到服務(wù)器端,服務(wù)器端程序判斷客戶端發(fā)來的信息類型,如果是普通的聊天消息就根據(jù)發(fā)送者信息和接受者信息進行消息轉(zhuǎn)發(fā)。例如客戶端A向客戶端B發(fā)送消息的處理過程如下:首先A向服務(wù)器發(fā)送消息,服務(wù)器程序判斷消息類型,如果是普通的聊天消息,則解析該消息,得到該消息的發(fā)送者A,接受者B。接著判斷B是否在線,如果在線就將消息發(fā)送過去,否則將消息存入數(shù)據(jù)庫。B接收到A發(fā)來的信息,如果是未建立對話

24、窗口,則在屏幕右下角出現(xiàn)彈窗提示。此外還有群組聊天功能,可以在“官方聊天室”功能中實現(xiàn)一對多的聊天,即在聊天室發(fā)送的消息是面向所有在線用戶的。 4、傳送文件模塊 在聊天主界面上有文件傳送功能,可以選擇任意的本地文件進行雙向傳送。不管是何種格式的文件,在底層全部通過ObjectOutputSteam/ObjectInputSteam等Java 提供的不同形式的流處理對象轉(zhuǎn)化為二進制的字節(jié)流傳送。在接收端再從這些I/O 流中讀取還原原始數(shù)據(jù)。 5、系統(tǒng)后臺管理模塊 (1)服務(wù)管理:服務(wù)器端的管理員可以在這里啟動后臺的服務(wù)器,發(fā)布聊天室公告或者彈窗公告給所有在線用戶。如果未開啟服務(wù)器,則在客戶端無法登錄,并會返回相應(yīng)的消息提示。 (2)用戶管理:可以根據(jù)用戶名或者用戶ID查詢已注冊的用戶詳細信息,并且可以修改、保存相關(guān)信息。這是一個對數(shù)據(jù)庫的簡單的增刪改查的操作。 (3)消息管理:當(dāng)一個用戶給其不在線的用戶發(fā)送消息時,系統(tǒng)會理解為發(fā)送的是離線消息。此消息將會存入數(shù)據(jù)庫,等目標用戶上線后再將消息推送過去。 3.1.3 系統(tǒng)用例圖 用例( Use Case)是軟件工程或系統(tǒng)工程中對系統(tǒng)

溫馨提示

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

評論

0/150

提交評論