2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  畢業(yè)論文(畢業(yè)設(shè)計)</p><p>  題目:android即時通訊軟件</p><p>  系 院: XXXXX</p><p><b>  學(xué)生姓名:XX</b></p><p>  學(xué) 號: XXX</p><p>  專 業(yè):計算機科學(xué)與技術(shù)<

2、;/p><p>  年 級: 計本0902班</p><p><b>  完成日期: XXX</b></p><p>  指導(dǎo)教師:XXXXX</p><p><b>  摘 要</b></p><p>  在網(wǎng)絡(luò)越來越發(fā)達的今天,人們對網(wǎng)絡(luò)的依賴越來越多,越來越離不開網(wǎng)

3、絡(luò),由此而產(chǎn)生的聊天工具越來越多,例如,國外的ICQ、國內(nèi)騰訊公司開發(fā)的OICQ?;贘ava網(wǎng)絡(luò)編程的強大功能,本次畢業(yè)設(shè)計使用Java編寫一個運行在android2.2版本以上的即時通訊軟件。 一般來說,聊天工具大多數(shù)由客戶端程序和服務(wù)器程序外加服務(wù)器端用于存放客戶數(shù)據(jù)的數(shù)據(jù)庫組成,本系統(tǒng)采用客戶端/服務(wù)器架構(gòu)模式通過Java提供的Socket類來連接客戶機和服務(wù)器并使客戶端和服務(wù)器之間相互通信,由于聊天是多點對多點的,Ja

4、va提供的多線程功能用多線程可完成多點對多點的聊天,數(shù)據(jù)庫管理系統(tǒng)用MYSQL完成并通過ADO.Net訪問數(shù)據(jù)庫。</p><p>  本系統(tǒng)建立在JAVA平臺上,系統(tǒng)的設(shè)計使用了面向?qū)ο蠹夹g(shù)和面向?qū)ο蟮脑O(shè)計原則。系統(tǒng)采用C/S結(jié)構(gòu),客戶端與客戶端以及客戶端與服務(wù)器端之間通過Socket傳送消息。使用JAVA語言編寫,開發(fā)工具采用Eclipse。服務(wù)器端設(shè)計與實現(xiàn)過程中,采用了多線程技術(shù),可以在單個程序當(dāng)中同時運

5、行多個不同的線程,執(zhí)行不同的任務(wù)。大大增強了程序?qū)Ψ?wù)器資源的利用。</p><p>  即時通訊系統(tǒng)完成后將可進行多人對多人的聊天,對好友進行查找和添加,對新用戶的注冊,發(fā)送消息、接受消息等等功能。</p><p>  關(guān)鍵字:多線程 ;客戶機/服務(wù)器 ;JAVA ; Socket ; Eclipse ; TCP/IP</p><p><b>  Abs

6、tract</b></p><p>  as the network become more and more developed, people become more and more lean to the network, and can not leave with out it. This caused the chat materials become more numerous, as

7、 the overseas ICQ system, the OICQ system that invented by Tencent Co., and so on. So we create a network chat medium just like the QQ. Java network programming based on the power, the use of Java designed to prepare gra

8、duates a chat system.</p><p>  In general, the majority of the chat tool for client and server program in addition to server-side storage of customer data for the database, the system uses a client / server

9、architecture model the adoption of Java provided Socket class connect client and server and between the client and server communicate with each other, as the chat is to provide point-to-multipoint and multi-threaded Java

10、 function to be completed by using multi-threaded chat and more point-to-multipoint, database management</p><p>  The system built on the JAVA platform, the system design using object-oriented technology and

11、 object-oriented design principles. System uses the C / S structure, client and client-side and server-side client and send messages through Socket. The use of JAVA language, development tools using Eclipse. Design and I

12、mplementation of server-side process, the use of multi-threading technology, which can process in a single run at the same time a number of different threads, the implementation of differ</p><p>  Chat syste

13、m will allow people to complete chat to more friends,and the system can search and add,can deal with new user registration, send messages, receive messages and so on. </p><p>  Keywords : Multithreading ; C

14、lient/Server ;JAVA ;Socket ;Eclipse ;TCP/IP</p><p><b>  目 錄</b></p><p><b>  1 緒論1</b></p><p>  1.1國內(nèi)外聊天系統(tǒng)的研究現(xiàn)狀1</p><p>  1.2 Java語言2</p

15、><p>  1.2.1 Java的發(fā)展歷史2</p><p>  1.2.2 Java的特點3</p><p>  1.2.3 Java與Internet4</p><p>  1.3 Socket編程4</p><p>  1.3.1 關(guān)于TCP/IP協(xié)議4</p><p>  1.3

16、.2 服務(wù)器和客戶機5</p><p>  1.4本文內(nèi)容安排6</p><p><b>  2 需求分析7</b></p><p>  2.1 可行性研究7</p><p>  2.1.1 可行性分析7</p><p>  2.1.2系統(tǒng)功能需求7</p><p&

17、gt;  2.1.3 系統(tǒng)性能需求8</p><p>  2.1.4 系統(tǒng)運行需求8</p><p>  2.2 數(shù)據(jù)流圖8</p><p>  2.2.1 頂層數(shù)據(jù)流圖8</p><p>  2.2.2 一層數(shù)據(jù)流圖9</p><p>  2.2.3 二層數(shù)據(jù)流圖9</p><p

18、><b>  3 概要設(shè)計11</b></p><p>  3.1系統(tǒng)實現(xiàn)原理11</p><p>  3.2 系統(tǒng)實現(xiàn)層次圖:12</p><p>  3.3各模塊詳細功能12</p><p>  3.3.2服務(wù)器端結(jié)構(gòu)12</p><p>  3.3.2 客戶端結(jié)構(gòu)14&l

19、t;/p><p><b>  4 詳細設(shè)計19</b></p><p>  4.1 系統(tǒng)流程圖19</p><p>  4.1.1 系統(tǒng)總體流程圖19</p><p>  4.1.2 系統(tǒng)客戶端流程圖20</p><p>  4.2 編寫服務(wù)器端程序20</p><p&

20、gt;  4.2.1 問題陳述20</p><p>  4.2.2 解決方案21</p><p>  4.3客戶端程序編寫28</p><p>  4.3.3 聊天室38</p><p><b>  參考文獻46</b></p><p><b>  致謝45</b&g

21、t;</p><p><b>  1 緒論</b></p><p>  1.1國內(nèi)外即時通訊系統(tǒng)的研究現(xiàn)狀</p><p>  目前國內(nèi)外做即時通訊軟件的公司很多,產(chǎn)品也琳瑯滿目,國內(nèi)有諸如騰訊QQ、新浪UC、網(wǎng)易泡泡等,國外有著名的MSN(新版改名為Live Messenger)以及跨平臺Gaim等。本人取最具代表性的QQ和MSN進行了一些研

22、究,作為我開發(fā)即時通訊的準(zhǔn)備。</p><p>  騰訊無疑是國內(nèi)即時通訊市場的霸主,自從99年進入即時通訊領(lǐng)域并迅速占市場之后,其在國內(nèi)用戶數(shù)量始終高居榜首,即使近幾年面對微軟MSN的強大攻勢,騰訊QQ的時常占有率依然穩(wěn)步增長。騰訊的成功與其對QQ的不斷創(chuàng)新和完善是分不開的。</p><p>  參考了許多網(wǎng)絡(luò)上的資料,以及自己通過觀察騰訊QQ運行時的各種細節(jié)。可以確定騰訊QQ是以多服務(wù)

23、器提供服務(wù)、服務(wù)器總控客戶端、客戶端之間UDP直連通信的。并且在兩個客戶端之間不能建立直連的情況下,才由服務(wù)器進行中轉(zhuǎn)通信。</p><p><b>  其模型如圖1-1</b></p><p>  圖1-1 騰訊QQ服務(wù)器-客戶端模型1</p><p>  與騰訊QQ不同,微軟的MSN Messenger只使用了TCP作為傳輸層通</

24、p><p>  信協(xié)議,所有客戶端與服務(wù)器進行連接,然后通過與服務(wù)器的TCP連接進行中轉(zhuǎn)通信。</p><p><b>  其模型如圖1-2</b></p><p>  圖1-2 MSN服務(wù)器-客戶端模型2</p><p>  騰訊使用的模型中,服務(wù)器主要處理客戶端各種狀態(tài)的控制,可以極大減輕服務(wù)器的處理壓力,但其內(nèi)部協(xié)議

25、和實現(xiàn)復(fù)雜度都較高。而MSN Messenger所有數(shù)據(jù)都要經(jīng)過服務(wù)器,所以服務(wù)器方的數(shù)據(jù)量會大一些(這也是平時很少見到使用MSN進行語音視頻聊天的)。</p><p>  綜合騰訊QQ和微軟MSN Messenger的特點和我所學(xué)專業(yè)技術(shù)范疇,我打算在我的系統(tǒng)中嘗試建立MSN的服務(wù)器-客戶端模型,但以單服務(wù)器提供服務(wù)。</p><p>  1.2 Java語言</p>&l

26、t;p>  1.2.1 Java的發(fā)展歷史</p><p>  Java的發(fā)展歷史,可以追朔到1990年。當(dāng)時Sun Microsystem公司為了發(fā)展消費類電子產(chǎn)品進行了一個名為Green的項目計劃。這個計劃的負責(zé)任是James Gosling。起初他用具有面向?qū)ο筇卣鞯腃++語言編寫嵌入式軟件,可以放在面包機或PDA(Personal Digital Assistant,個人數(shù)字主力)等小型電子消費這杯

27、里,以使設(shè)備變得更為“聰明”,更具備人工只能。但后來發(fā)現(xiàn)C++并不適合這類任務(wù);因為C++常會使系統(tǒng)失效。尤其在內(nèi)存管理方面,c++采用直接地址訪問方式。需要程序員記錄并管理內(nèi)存資源。這造成程序員編程的極大負擔(dān),并可能產(chǎn)生多個Bugs。面包機上的程序錯誤可能使面包機燒壞甚至爆炸。</p><p>  為了解決此類問題,Gosling決定開發(fā)一種新的語言,并取名為Oak。它采用了大部分與C++類似的語法對可能具備危

28、險性的功能加以改進,例如將內(nèi)存管理改為由語言自己進行管理,以減少程序員的負擔(dān)及可能發(fā)生的錯誤。Oak是一種可移置的語言,它是一種平臺獨立的語言,能夠在各種芯片上執(zhí)行,可以降低設(shè)備的研發(fā)成本。</p><p>  1.2.2 Java的特點</p><p>  Java是一種簡單、安全、容易適用、面向?qū)ο?、可移置、高性能、多線程的語言。 </p><p><b&

29、gt;  簡單性</b></p><p>  Java語言簡單高校,基本Java系統(tǒng)(編譯器和解釋器)所占空間不足250KB由于Java最初是為了對家用電器進行集成控制而設(shè)計的,因而具備簡單命了的特征。</p><p><b>  面向?qū)ο?lt;/b></p><p>  面向?qū)ο蠹夹g(shù)是現(xiàn)代工業(yè)的一次革新,提高了軟件的模塊化程度和重復(fù)適

30、用率,縮短了軟件開發(fā)時間,減低了卡發(fā)成本。在Java之前雖然已經(jīng)有面向?qū)ο蟮某绦蛟O(shè)計語言問問世,但有些如c++并不是完全的面向?qū)ο螅敲嫦蜻^程和面向?qū)ο蟮幕旌象w。Java則是完全面向?qū)ο蟮某绦蛟O(shè)計語言。</p><p><b>  安全性</b></p><p>  Java是可以用在網(wǎng)路及分布環(huán)境下的網(wǎng)路程序設(shè)計語言。在網(wǎng)路環(huán)境下,語言的安全性變得更為重要。Jav

31、a提供了許多安全機制來保證其適用上的安全性。</p><p><b>  平臺獨立</b></p><p>  平臺獨立指程序不受操作平臺的限制,可以應(yīng)用在各種平臺上。Java源程序經(jīng)過編譯后生成字節(jié)碼文件,而字節(jié)碼與具體的計算機無關(guān)。只要計算機安裝了能解釋執(zhí)行字節(jié)碼的Java虛擬機JVM,就可以執(zhí)行字節(jié)碼文件,從而實現(xiàn)Java的平臺獨立性。</p>&

32、lt;p><b>  多線程</b></p><p>  Java具備內(nèi)建的多線程功能,可以將一個程序的不同程序段設(shè)置為不同的線程,使各線程并發(fā)、獨立執(zhí)行,提高系統(tǒng)的運行效率。</p><p><b>  6.網(wǎng)絡(luò)功能</b></p><p>  Java能從全球網(wǎng)絡(luò)資源獲取所需信息,如數(shù)據(jù)文件、影響文件、聲音文件等

33、,并對所得信息進行處理,所以說Java是一種網(wǎng)絡(luò)語言。</p><p><b>  7.執(zhí)行效率</b></p><p>  Java的字節(jié)碼需要經(jīng)過Java虛擬機JVM解釋成機器碼才能執(zhí)行,所以速度上較慢。但是隨著JVM技術(shù)的進步,使得其執(zhí)行速度直逼C與C++。</p><p>  1.2.3 Java與Internet</p>

34、<p>  Java語言取得成功的領(lǐng)域之一就是網(wǎng)絡(luò)(其他語言)數(shù)頁代碼---->(Java)一條語句。TCP/IP(傳輸控制協(xié)議/網(wǎng)間協(xié)議)是internet的主要協(xié)議,定義了計算機和外設(shè)進行通信所使用的規(guī)則(應(yīng)用層,傳輸層,網(wǎng)絡(luò)層,鏈路層).大多數(shù)基于internet的應(yīng)用程序被看作TCP/IP協(xié)議的上一層. 如 : ftp, http, smtp, pop3, telnet, nntp等。  

35、 IP地址:TCP/IP網(wǎng)絡(luò)中的每臺計算機都有唯一的地址--IP地址.</p><p>  在Java中,有一個用來存儲internet地址的類叫InterAddress.</p><p>  Java提供的網(wǎng)絡(luò)功能有三大類: URL, Socket, Datagram.</p><p>  1、URL是三大功能中最高級的一種,通過URL Java程序可以直接送出或

36、讀入網(wǎng)絡(luò)上的數(shù)據(jù).</p><p>  2、Socket是傳統(tǒng)網(wǎng)絡(luò)程序最常用的方式,可以想象為兩個不同的程序通過網(wǎng)絡(luò)的通信信道.</p><p>  3、Datagram是更低級的網(wǎng)絡(luò)傳輸方式,它把數(shù)據(jù)的目的紀(jì)錄在數(shù)據(jù)包中,然后直接放在網(wǎng)絡(luò)上</p><p>  1.3 Socket編程</p><p>  1.3.1 關(guān)于TCP/IP協(xié)議&

37、lt;/p><p>  TCP協(xié)議是網(wǎng)絡(luò)通信的基石,對此,Java專門提供了Socket的類庫,在其中抽象出TCP協(xié)議通信的常用方法:</p><p>  TCP協(xié)議與三次握手:</p><p>  在講述TCP協(xié)議流程前,先來聲明兩個重要的概念:</p><p> ?。?)客戶端,首先發(fā)送TCP請求的是客戶端,客戶端一般是服務(wù)(比如數(shù)據(jù)查詢服務(wù)

38、)的請求者。</p><p> ?。?)服務(wù)器,在接收到客戶端的請求后(確保同客戶端的通信信道建立)服務(wù)器會向客戶端提供服務(wù)。服務(wù)器一般是服務(wù)的執(zhí)行者,會向客戶端返回服務(wù)執(zhí)行的結(jié)果。</p><p>  為了實現(xiàn)客戶端同服務(wù)器端的通信,客戶端首先發(fā)送一個“SYN”數(shù)據(jù)包。如果服務(wù)器收到SYN標(biāo)記,它將發(fā)回一個“SYN+ACK”數(shù)據(jù)包。接著,客戶端為了表示收到了這個SYN+ACK信息,會向服

39、務(wù)器發(fā)送一個最終確認(rèn)信息(ACK包)。這種SYN,SYN+ACK,ACK的步驟被稱為TCP連接建立時的“三次握手”,在這之后,連接就建立起來了,這個連接將一直保持活動狀態(tài),直到超時或者任何一方發(fā)出一個FIN(結(jié)束)信號。這種通信模式也叫客戶端/服務(wù)器(C/S)模式。</p><p>  主機A 主機B</p><p>  圖1-3 三次握手協(xié)議<

40、;/p><p>  由此可見,通過客戶端和服務(wù)器的“三次握手”,雙方可以建立暢通的通信信道,在此信道上雙方互相傳輸數(shù)據(jù)。</p><p>  1.3.2 服務(wù)器和客戶機</p><p>  網(wǎng)絡(luò)最基本的目的就是讓兩臺機器連接到一起,并相互“交談”或者“溝通”。一旦兩臺機器都發(fā)現(xiàn)了對方,就可以展開一次令人愉快的雙向?qū)υ?。但它們怎樣才能“發(fā)現(xiàn)”對方呢?這就像在游樂園里那樣:

41、一臺機器不得不停留在一個地方,偵聽其他機器說:“嘿,你在哪里呢?” “停留在一個地方”的機器叫做“服務(wù)器”(Server);到處“找人”的機器則叫做“客戶機”(Client)或者“客戶”。它們之間的區(qū)別只有在客戶機試圖同服務(wù)器連接的時候才顯得非常明顯。一旦連通,就變成了一種雙向通信,誰來扮演服務(wù)器或者客戶機便顯得不那么重要了。 所以服務(wù)器的主要任務(wù)是偵聽建立連接的請求,這是由我們創(chuàng)建的特定服務(wù)器對象完成的。而客戶機的任務(wù)

42、是試著與一臺服務(wù)器建立連接,這是由我們創(chuàng)建的特定客戶機對象完成的。一旦連接建好,那么無論在服務(wù)器端還是客戶機端,連接只是魔術(shù)般地變成了一個IO數(shù)據(jù)流對象。從這時開始,我們可以象讀寫一個普通的文件那樣對待連接。所以一旦建好連接,我們只需使用自己熟悉的IO命令即可。這正是Java聯(lián)網(wǎng)最方便的一個地方。</p><p>  圖1-4 服務(wù)器和客戶機的連接</p><p><b>  1

43、.4本文內(nèi)容安排</b></p><p>  本論文內(nèi)容安排如下:</p><p>  第二章為聊天系統(tǒng)的需求分析,主要介紹系統(tǒng)的可行性研究,需求分析流程圖等。</p><p>  第三章為概要設(shè)計,分模塊介紹系統(tǒng)的具體實現(xiàn)過程。</p><p><b>  第四章為詳細設(shè)計。</b></p>

44、<p><b>  2 需求分析</b></p><p>  2.1.1 可行性分析</p><p>  經(jīng)濟可行性:由于本系統(tǒng)的主要背景是畢業(yè)課程設(shè)計,不注重直接的經(jīng)濟效益和其后的發(fā)展方向,只在注重自身水平和能力的提高,對自身的經(jīng)濟要求也不高,只要有一臺能運行Java軟件的電腦便可,所以不用考慮到經(jīng)濟問題。</p><p>  技術(shù)

45、可行性: 本系統(tǒng)的開發(fā)利用Microsoft SQL Server2005作為本系統(tǒng)的數(shù)據(jù)庫,它是一個支持多用戶的新型數(shù)據(jù)庫,適用于大中規(guī)模的數(shù)據(jù)量需求。學(xué)校校園網(wǎng)的建設(shè)也為新系統(tǒng)服務(wù)器/客戶端的結(jié)構(gòu)提供了硬件的支持。使用Java作為系統(tǒng)開發(fā)的開發(fā)環(huán)境,它提供完善的指令控制語句、類與對象的支持及豐富的數(shù)據(jù)類型,給開發(fā)高性能系統(tǒng)提供的保障為開發(fā)滿足客戶要求的系統(tǒng),保證了代碼的模塊化要求,而代碼模塊化的提高,非常有利于以后對新系統(tǒng)的擴展與修

46、改。</p><p>  運行可行性: 本系統(tǒng)為一個小型的即時聊天系統(tǒng),所耗費的資源非常的小,現(xiàn)在一般的電腦無論是硬件還是軟件都能夠滿足條件,因此,本系統(tǒng)在運行上是可行的。</p><p>  綜上所述,本系統(tǒng)的設(shè)計與開發(fā)在技術(shù)上和硬件設(shè)備上的條件都是滿足的,因此,它在技術(shù)上是可行的。</p><p>  2.1.2系統(tǒng)功能需求</p><p&g

47、t;  本系統(tǒng)主要通過客戶端,服務(wù)器端來體現(xiàn)即時通訊的基本功能。</p><p><b> ?。?)服務(wù)器端</b></p><p><b>  1.處理用戶注冊</b></p><p><b>  2.處理用戶登錄</b></p><p>  3.處理用戶發(fā)送信息</p

48、><p>  4.處理用戶得到信息</p><p>  5.處理用戶增刪改請求</p><p><b>  6.處理用戶退出</b></p><p><b> ?。?)客戶端</b></p><p>  1.用戶注冊界面及結(jié)果</p><p>  2.用戶

49、登錄界面及結(jié)果</p><p>  3.用戶發(fā)送信息界面及結(jié)果</p><p>  4.用戶得到信息界面及結(jié)果</p><p>  5.用戶請求增刪改及結(jié)果</p><p>  6.用戶退出界面及結(jié)果</p><p>  2.1.3 系統(tǒng)性能需求</p><p>  實用性:為信息交流提供方便,

50、有效進行作業(yè)管理。</p><p>  操作簡單:本系統(tǒng)應(yīng)該適用于不同水平的使用者,包括事業(yè)單位和企業(yè)單位,同時系統(tǒng)不應(yīng)太復(fù)雜和煩瑣,因此要求系統(tǒng)的操作盡可能簡單易行。</p><p>  技術(shù)先進:產(chǎn)品的系統(tǒng)設(shè)計和開發(fā)應(yīng)緊跟著整個計算機發(fā)展潮流,采用當(dāng)時最先進的設(shè)計思想,利用最新的開發(fā)技術(shù)和開發(fā)工具。使系統(tǒng)能夠無論在功能設(shè)計上,還是在技術(shù)實現(xiàn)上,都處于同行業(yè)的領(lǐng)先地位。</p>

51、;<p>  安裝使用簡便:服務(wù)器端的安裝簡潔明了,客戶機無需再裝任何軟件就可以直接注冊登陸聊天。</p><p>  適應(yīng)性:應(yīng)該能廣泛應(yīng)用于不同類型的企事業(yè)單位。系統(tǒng)采用模塊化設(shè)計,用戶可以根據(jù)自己的實際情況自行組合,使系統(tǒng)在不同的硬件環(huán)境下都能得以應(yīng)用。 </p><p>  代碼可讀性好:文中的代碼將盡可能簡潔,易懂。</p><p>  2.

52、1.4 系統(tǒng)運行需求</p><p>  移動客戶端需500MHz及以上的處理器</p><p>  移動客戶端需256MB及以上的ROM空間</p><p>  移動客戶端需256MB及以上的RAM空間</p><p>  移動客戶端需具有WiFi/GRPS網(wǎng)絡(luò)接收模塊,能正常連接到網(wǎng)絡(luò)</p><p>  服務(wù)端

53、需具有P4 1.6GHz及以上的處理器</p><p>  服務(wù)端需具有80GB及以上的硬板空間</p><p>  服務(wù)端需具有1GB及以上的內(nèi)存空間</p><p><b>  2.2 數(shù)據(jù)流圖</b></p><p>  2.2.1 頂層數(shù)據(jù)流圖</p><p>  圖2-1 頂層數(shù)據(jù)流圖&

54、lt;/p><p>  2.2.2 一層數(shù)據(jù)流圖</p><p><b>  . </b></p><p>  2.2.3 二層數(shù)據(jù)流圖</p><p>  圖2-3 系統(tǒng)二層數(shù)據(jù)流圖</p><p><b>  3 概要設(shè)計</b></p><p>

55、<b>  3.1系統(tǒng)實現(xiàn)原理</b></p><p>  即時通訊的設(shè)計跟普通網(wǎng)站設(shè)計有著許多不同的地方,普通網(wǎng)站設(shè)計所考慮的因素,例如,普通網(wǎng)站需要對布局進入大量美化以及動畫設(shè)計等等,而即時通訊只要提供滿足訪客雙方直接實時聊天即可。因此,在設(shè)計聊天系統(tǒng)的過程中,必須要考慮好以下幾個設(shè)計要點:</p><p>  在Internet上的聊天程序一般都是以服務(wù)器提供服

56、務(wù)端連接響應(yīng),使用者通過客戶端程序登錄到服務(wù)器,就可以與登錄在同一服務(wù)器上的用戶交談,這是一個面向連接的通信過程。因此,程序要在TCP/IP環(huán)境下,實現(xiàn)服務(wù)器端和客戶端兩部分程序。</p><p>  圖3-1 系統(tǒng)實現(xiàn)原理圖</p><p>  3.2 系統(tǒng)實現(xiàn)層次圖:</p><p>  3.3各模塊詳細功能</p><p>  3.3

57、.1服務(wù)器端結(jié)構(gòu)</p><p>  圖3-3 服務(wù)器端結(jié)構(gòu)圖</p><p>  Server.java:服務(wù)器啟動監(jiān)聽操作。</p><p>  DBUtil.java:服務(wù)器端連接數(shù)據(jù)庫,負責(zé)服務(wù)器端與數(shù)據(jù)庫連接讀取數(shù)據(jù)操作。</p><p>  InputThread.java:服務(wù)器端監(jiān)聽接收客戶端發(fā)來信息,處理各種請求。&l

58、t;/p><p>  OutputThread.java:服務(wù)器端向客戶端發(fā)送消息。</p><p>  TranObject.java:服務(wù)器端與客戶端消息交換的對象類型。</p><p>  TranObjectType.java :服務(wù)器接受客戶端發(fā)來消息的所有類型。</p><p>  UserDao.java:定義一個與所有用戶操作相關(guān)

59、的接口。</p><p>  UserDaoImpl.java: UserDao的具體實現(xiàn)類。</p><p>  3.3.2 客戶端結(jié)構(gòu)</p><p>  圖3-4 客戶端結(jié)構(gòu)圖</p><p>  GetMsgService.java:客戶端啟動一個服務(wù)。</p><p>  WelcomeActivity.ja

60、va:客戶端啟動歡迎頁面。</p><p>  RegisterActivity.java:客戶端在線注冊界面。</p><p>  ChatActivity.java:客戶端聊天界面。</p><p>  AddFriendActivity.java:客戶端查找好友界面并提供添加好友功能。</p><p>  UserlistAdapter

61、.java:客戶端好友信息數(shù)據(jù)。</p><p>  OwnInfodata.java:客戶端自己信息數(shù)據(jù)成員。</p><p>  RegisterInfo.java:客戶端注冊信息數(shù)據(jù)成員。</p><p>  UserInfodata.java:客戶端好友信息數(shù)據(jù)成員。</p><p>  Userdata.java:客戶端用戶信息數(shù)據(jù)

62、。</p><p>  RegisterActivity.java:客戶端注冊界面及交互。</p><p>  LogonActivity.java:客戶端登錄界面及交互。</p><p>  ChartActivity.java:負責(zé)客戶端聊天窗體及交互。</p><p>  UserInfoActivity.java:客戶端好友信息界面及

63、交互。</p><p>  OwnInfoActivity.java:客戶端自己信息界面及交互。</p><p>  FindUserActivity.java:負責(zé)客戶端好友查找界面及交互。</p><p>  UserListActivity.java:客戶端在線用戶界面與交互。</p><p>  SocketClient.java:客

64、戶端連接服務(wù)器及與服務(wù)器進行交互。</p><p>  GalleryTabactivity.java:客戶端主界面,負責(zé)各項窗體操作和數(shù)據(jù)分配及交互。</p><p><b>  4 詳細設(shè)計</b></p><p><b>  4.1 系統(tǒng)流程圖</b></p><p>  4.1.1 系統(tǒng)總體

65、流程圖</p><p>  圖4-1 系統(tǒng)總體流程圖</p><p>  4.1.2 系統(tǒng)客戶端流程圖</p><p>  圖4-2 客戶端流程圖</p><p>  4.2 編寫服務(wù)器端程序</p><p>  4.2.1 問題陳述</p><p>  1. 能過接收用戶注冊信息并保存。&l

66、t;/p><p>  2. 能夠允許注冊過的用戶登錄聊天界面。</p><p>  3. 能夠與在線好友進行自由聊天。</p><p>  4. 服務(wù)器運行在自定義的端口8080上。</p><p>  5. 服務(wù)器監(jiān)控用戶列表和對用戶消息進行轉(zhuǎn)發(fā)。</p><p>  6. 服務(wù)器對用戶的請求作出處理。</p>

67、;<p>  7. 服務(wù)器對在線下線列表進行更新。</p><p>  4.2.2 解決方案 </p><p>  4.2.2.1 后臺數(shù)據(jù)庫設(shè)計</p><p>  基于服務(wù)器跨平臺運行的架構(gòu),服務(wù)器的后臺數(shù)據(jù)庫使用了SQL Server2005。</p><p> ?。?)userInfo 表:</p>&l

68、t;p><b>  userInfo表</b></p><p>  此表主要包含了用戶帳戶基本信息。</p><p>  即時通訊系統(tǒng)采用賬戶、密碼的登錄方式,給每個用戶生成一個唯一ID來做系統(tǒng)內(nèi)部的用戶標(biāo)識。</p><p>  (2)friend表</p><p><b>  friend表</

69、b></p><p>  此表主要包含了用戶好友ID關(guān)系信息。</p><p>  4.2.2.2用戶注冊</p><p><b>  1.去數(shù)據(jù)庫讀數(shù)據(jù)</b></p><p>  首先創(chuàng)建一個字符串連接并寫入查詢命令,利用dataset保存臨時數(shù)據(jù),留作后面注冊時用。 </p><p>

70、<b>  2.客戶端請求注冊</b></p><p>  客戶端通過RegisterActivity.java請求注冊,填寫注冊信息,并驗證各項信息格式是否符合規(guī)定,如果不符合規(guī)定格式,則進行提示重新填寫,最后將請求信息發(fā)送給服務(wù)器端。</p><p>  下面是注冊驗證賬戶代碼:</p><p><b>  3.服務(wù)器端響應(yīng)<

71、;/b></p><p>  服務(wù)器端得到注冊請求會將對象輸入流轉(zhuǎn)化為文件輸出流,并反饋給客戶端??蛻舳说玫阶孕畔⒑髸谇芭_填寫注冊信息,然后創(chuàng)建文件輸出流,再用對象輸出流包裝后寫入本地文件將其持久化。最后關(guān)閉對象輸出流和文件輸入流。</p><p>  4.給客戶端返回信息</p><p>  將用戶注冊成功或失敗的信息用打印流包裝Socket以后,輸出給

72、客戶端注冊結(jié)果的詳細信息。</p><p>  5.關(guān)閉Socket連接</p><p>  當(dāng)以上的程序都正常運行后,需要關(guān)閉Socket連接,否則將會浪費服務(wù)器與客戶端之間的資源。</p><p>  4.2.2.3用戶登陸</p><p>  1.去數(shù)據(jù)庫讀用戶數(shù)據(jù)</p><p>  打開用戶數(shù)據(jù)庫文件“Use

73、r.txt”,將用戶數(shù)據(jù)對象集載入內(nèi)存,以供下面的程序使用。</p><p>  2.驗證用戶名是否存在</p><p>  在對象數(shù)據(jù)庫中查找是否有與登錄用戶的用戶名相同的記錄,如果有繼續(xù)驗證,否則退出驗證處理,返回“沒有此用戶”錯誤</p><p>  用戶登陸程序模塊如下:</p><p>  4.2.2.4用戶退出</p>

74、<p><b>  1.接收退出信息</b></p><p>  當(dāng)用戶退出時,客戶端將會用基于Socket的對象輸出流發(fā)送給服務(wù)器退出對象。</p><p>  2.在線列表中刪除用戶</p><p>  用戶退出后應(yīng)該把用戶從在線列表中刪除,否則用戶退出用戶還在在線列表中,那么該用戶下次將會無法登錄。</p>&

75、lt;p><b>  3.更新在線列表</b></p><p>  用戶退出后將服務(wù)器端監(jiān)控界面的用戶列表更新。否則用戶數(shù)據(jù)將會不同步。</p><p><b>  用戶退出模塊程序:</b></p><p>  4.2.2.5 接收用戶聊天信息</p><p>  1.接收用戶聊天信息<

76、;/p><p>  當(dāng)用戶發(fā)送聊天信息時,服務(wù)端將會收到客戶端用Socket傳輸過來的聊天信息對象,然后將其強制轉(zhuǎn)換為Chat對象。</p><p>  2.過濾用戶聊天內(nèi)容的非法信息</p><p>  分析聊天信息對象的聊天內(nèi)容,用語言過濾類將非法字符過濾掉。語言過濾的時候?qū)蜷_“badword.txt”文件,不允許出現(xiàn)的關(guān)鍵詞將會存儲在文件中,關(guān)鍵字之間以逗號分

77、割。當(dāng)聊天內(nèi)容中出現(xiàn)要過渡的關(guān)鍵字是將會被系統(tǒng)屏蔽,而聊天內(nèi)容</p><p>  3.接收服務(wù)器端的系統(tǒng)消息</p><p>  當(dāng)有其他用戶登陸時,系統(tǒng)會給在線的所有用戶發(fā)送用戶登陸信息,并且通過服務(wù)器可以給各用戶發(fā)送系統(tǒng)消息。系統(tǒng)消息發(fā)出后,如再有登錄者也可以接收到系統(tǒng)消息。</p><p><b>  4.返回給客戶端</b></

78、p><p>  當(dāng)以上信息都封裝成功后,打開與客戶端連接的Socket的輸出流,然后再用ObjectOutputStream對象輸出流包裝后輸出給客戶端。</p><p>  4.3客戶端程序編寫</p><p><b>  4.3.1 </b></p><p>  程序?qū)⑼ㄟ^AddFriendActivity.java用戶

79、注冊界面收集用戶的用戶名、密碼、電子郵箱。如上圖所示</p><p>  客戶端用戶注冊信息模塊程序(通過調(diào)用系統(tǒng)本省已經(jīng)定義好的向服務(wù)器發(fā)送信息的方法直接將頁面注冊的信息發(fā)送到服務(wù)器端):</p><p>  4.3.2 用戶登錄</p><p>  4.3.2.1收集用戶登錄信息</p><p>  程序?qū)⑼ㄟ^LoginActivity.

80、java用戶登錄界面收集用戶的用戶名、密碼,如圖</p><p>  圖4-15 收集用戶登錄信息圖</p><p><b>  4.3.3 聊天室</b></p><p>  當(dāng)用戶登錄成功后,用戶的登錄界面將會隱藏,然后創(chuàng)建用戶聊天室窗口,在界面的標(biāo)題欄將會顯示當(dāng)前登錄用戶的用戶名,以防止一個機器上的用戶開多個賬號進入聊天室后分不清哪個窗口

81、是哪個用戶登錄的,界面第一行將顯示當(dāng)前在線人數(shù)。位于界面正中的兩個控件分別是List和TextBox用來顯示當(dāng)前服務(wù)器上的在線會員名單列表和公共聊天信息。</p><p>  位于界面下方的就是一些用于聊天的功能控件和聊天內(nèi)容個性化配置控件。包括聊天對象,聊天語氣,聊天內(nèi)容,聊天字體,風(fēng)格,大小,顏色…….</p><p>  4.3.3.1 用戶發(fā)送信息</p><p

82、>  用戶需要發(fā)送信息時,在聊天內(nèi)容里寫下要發(fā)送的信息,然后點擊發(fā)送就可以發(fā)送到其他客戶端,也可以選擇私聊,聊天表情,聊天信息通過服務(wù)器發(fā)送到其他客戶端。如圖:</p><p>  當(dāng)多個用戶同時在線時可以對某個人私聊,可以查看到最近聊天用戶的列表:</p><p>  User u = new User();</p><p>  u.setName(enti

83、ty.getName());</p><p>  u.setId(entity.getId());</p><p>  u.setImg(entity.getImg());</p><p>  Intent intent = new Intent(context, ChatActivity.class);</p><p>  intent.s

84、etFlags(Intent.FLAG_ACTIVITY_NEW_TASK);</p><p>  intent.putExtra("user", u);</p><p>  context.startActivity(intent);</p><p>  // Toast.makeText(Tab2.this, "開始聊天"

85、, 0).show();</p><p>  application.setRecentNum(0);</p><p>  4.3.3.3 保存聊天記錄</p><p>  當(dāng)用戶需要保存聊天記錄時可以直接點擊“保存”按鈕,為了防止多用戶聊天記錄文件沖突問題,聊天記錄將會以“用戶名_message.txt”為文件名,將信息保存在當(dāng)前應(yīng)用程序目錄下。如圖</p&

86、gt;<p><b>  保持模塊程序:</b></p><p>  4.3.3.4 顯示系統(tǒng)時間</p><p>  當(dāng)用戶需要查看當(dāng)前時間時,可以直接點擊“時鐘”按鈕,將會啟動一個漂亮的電子時鐘,</p><p><b>  時鐘模塊程序:</b></p><p>  圖4-22

87、屏蔽聊天信息</p><p>  FileReader fileReader = new FileReader(files);</p><p>  BufferedReader read = new BufferedReader(fileReader);</p><p>  while (true) {</p><p>  String li

88、ne = read.readLine();</p><p>  if (line == null) {</p><p><b>  break;}</b></p><p>  fileString += (line);</p><p>  // fileString += (line + "\n");

89、</p><p><b>  }</b></p><p>  read.close();</p><p>  // System.out.println(fileString);</p><p>  } catch (FileNotFoundException e) {</p><p>  //

90、TODO 自動生成 catch 塊</p><p>  e.printStackTrace();</p><p>  } catch (IOException e) {</p><p>  // TODO 自動生成 catch 塊</p><p>  e.printStackTrace();</p><p><b

91、>  }</b></p><p>  return fileString;</p><p><b>  }</b></p><p>  4.3.3.6 退出聊天系統(tǒng)</p><p>  當(dāng)前用戶點擊“退出”按鈕或者關(guān)閉窗口時,系統(tǒng)將會把用戶退出的信息打包成對象發(fā)送給服務(wù)器,并退出客戶端程序。</p

92、><p>  4.3.3.7出現(xiàn)異常信息</p><p>  在用戶聊天時,當(dāng)服務(wù)器關(guān)閉或者與服務(wù)器無法連接時,客戶端將會給出“不能連接到服務(wù)器!”的信息。并在用戶查看后退出客戶端。</p><p><b>  參考文獻</b></p><p>  [1] 孟凡榮.?dāng)?shù)據(jù)庫原理與應(yīng)用.中國礦業(yè)大學(xué),2009(8)28-30&l

93、t;/p><p>  [2] 張虹.軟件工程與軟件開發(fā)工具.清華大學(xué)出版社.2009(1)55-75</p><p>  [3] Bruce Eckel.Thinking in Java.機械工業(yè)出版社.2009(6)42-64</p><p>  [4] 羅軍舟等. TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù).清華大學(xué)出版社.2008(10)</p><p&g

94、t;  [5] 孫一林,彭波.Java網(wǎng)絡(luò)編程實例.清華大學(xué)出版社.2003(4)</p><p>  [6] 李樹青.Java通用范例開發(fā)金典.電子工業(yè)出版社.2009</p><p>  [7] 王鵬.Java Swing 圖形界面開發(fā)與案例詳解.清華大學(xué)出版社.2008</p><p>  [8] 龐永慶,翟鵬.Java完全自學(xué)寶典.清華大學(xué)出版社.2008&

95、lt;/p><p>  [9] 劉永華,于春花.Java網(wǎng)絡(luò)編程.清華大學(xué)出版社.2008</p><p>  [10] Boost Documentation,http://www.boost.org 或 http://boost.sourceforge.net </p><p>  [11] Boost.Asio Documentation,http://asio.

96、sourceforge.net </p><p>  [12] 孫桂蘭.電子商務(wù)網(wǎng)上書店系統(tǒng).北京:人民郵電出版社,2004</p><p>  [13] Jalote P.Optimum control limits for employing statistical process control in software process. IEEE Trans on Software

97、Engineering,2002,28(12)</p><p>  [14] 薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概述.第三版.北京:高等教育出版社,2004. </p><p>  [15] B. Ford, M.I.T., P. Srisuresh, etc. Peer-to-Peer (P2P) communication across middleboxes. http://midcom-p

98、2p.sourceforge.net/draft-ford-midcom-p2p-01.txt 2004</p><p>  [16] 飛思科技產(chǎn)品研發(fā)中心. Java 2應(yīng)用開發(fā)指南[J]. 北京:電子工業(yè)出版社, 2002</p><p>  [17] 薛為民, 夏文紅, 解侖.Java應(yīng)用教程 北京:北京交通大學(xué)出版社 2005</p><p>  [18]

99、http://java.sun.com</p><p>  [19] http://www.microjava.com/</p><p>  [20] http://www.csdn.net/</p><p>  [21] http://www.cnjm.net/tech/article1101.html</p><p><b> 

100、 致謝</b></p><p>  本文討論了如何利用JAVA技術(shù)開發(fā)聊天室系統(tǒng),基本滿足了結(jié)構(gòu)化、界面友好、速度快、安全性以及穩(wěn)定性等特點。</p><p>  在當(dāng)今電腦網(wǎng)絡(luò)密布的世界當(dāng)中,一個簡單高效的局域網(wǎng)通信工具是如此的具有實用性,所以我們應(yīng)當(dāng)重視對它的相關(guān)研究與開發(fā)。在這次的畢業(yè)設(shè)計中,我應(yīng)用了JAVA開發(fā)工具在WINDOWS平臺上開發(fā)了一個基于WINDOWS平臺的

101、局域網(wǎng)通信工具,在這一重要的領(lǐng)域進行了相關(guān)的實踐,不管是對我的研究能力,還是實際動手能力,還是資料查閱能力,都起了相當(dāng)大的益處。所以,我決定認(rèn)真總結(jié)這次畢業(yè)設(shè)計的經(jīng)驗,以及學(xué)習(xí)到的知識,來更加的充實自己的頭腦和完善自己的知識結(jié)構(gòu)。</p><p>  系統(tǒng)著重研究并實現(xiàn)了網(wǎng)絡(luò)應(yīng)用的部分。根據(jù)實現(xiàn)的情況看,具有較友好的聊天界面生成效果,以及流暢的網(wǎng)絡(luò)通信效果。生成的聊天室可以達到基本的聊天要求,具有較高的研究價值。

102、</p><p>  一個月的忙碌和工作,本次畢業(yè)設(shè)計已經(jīng)接近尾聲,作為一個??粕漠厴I(yè)設(shè)計,由于經(jīng)驗的匱乏,難免有許多考慮不周全的地方,如果沒有導(dǎo)師的督促指導(dǎo),以及一起工作的同學(xué)們的支持,想要完成這個設(shè)計是難以想象的。在這里再次感謝我的導(dǎo)師XXX老師。</p><p>  通過畢業(yè)設(shè)計,發(fā)現(xiàn)自己在理論研究和實際工作能力等方面都得到了提高,受益匪淺,同時在老師的指導(dǎo)和課題組同學(xué)的共同幫助下

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論