多人聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文_第1頁
多人聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文_第2頁
多人聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文_第3頁
多人聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文_第4頁
多人聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、多人聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)簡單聊天程序的設(shè)計(jì)與實(shí)現(xiàn)摘 要本課程設(shè)計(jì)主要是設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡單的聊天程序,該聊天程序能夠支持多人聊 天,聊天的內(nèi)容可以僅僅支持文本信息,聊天程序包括服務(wù)器程序和客戶端程序。在課 程設(shè)計(jì)中系統(tǒng)的開發(fā)平臺為 Eclipse程序運(yùn)行平臺為 Windows XP。關(guān)鍵詞:聊天程序;服務(wù)器;客戶端;Eclipse1引言本課程設(shè)計(jì)主要是簡單聊天程序的設(shè)計(jì),使用MSN或QQ,分析聊天程序的功能需求及工作原理。該聊天程序能夠支持多人聊天,聊天的內(nèi)容可以僅僅支持文本信息, 聊天程序包括服務(wù)器程序和客戶端程序。1.1課程設(shè)計(jì)目的該課程設(shè)計(jì)的目的主要是通過對簡單聊天程序的設(shè)計(jì)及QQ原理的分

2、析,了解聊天程序的功能需求及工作原理;熟悉 TCP/IP協(xié)議以及套節(jié)字編程原理;熟悉 Eclipse編程 環(huán)境及Socket/ServerSocke編程方法。1.2課程設(shè)計(jì)要求(1)按要求編寫課程設(shè)計(jì)報(bào)告書,能正確闡述設(shè)計(jì)結(jié)果。(2)通過課程設(shè)計(jì)培養(yǎng)學(xué)生嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,認(rèn)真的工作作風(fēng)和團(tuán)隊(duì)協(xié)作精神。(3)學(xué)會文獻(xiàn)檢索的基本方法和綜合運(yùn)用文獻(xiàn)的能力。(4)在老師的指導(dǎo)下,要求每個(gè)學(xué)生獨(dú)立完成課程設(shè)計(jì)的全部內(nèi)容。1.3課程設(shè)計(jì)平臺課程設(shè)計(jì)中系統(tǒng)的開發(fā)平臺為 Eclipse,程序運(yùn)行平臺為 Windows XP2需求分析2.1功能需求分析(1 )用戶端之間的信息發(fā)送,本程序需要實(shí)現(xiàn)的最基本的功能。用

3、戶在界面上可 以將自己需要發(fā)送的信息填入相應(yīng)的對話框中,點(diǎn)擊發(fā)送按鈕后,可以將信息正常的發(fā) 送給相應(yīng)的其它用戶,這個(gè)過程中的客戶端與客戶端之間使用點(diǎn)對點(diǎn)發(fā)送信息,預(yù)計(jì)利 用TCP/IP協(xié)議中的UDP協(xié)議,在本程序中共需要3個(gè)端口,此功能預(yù)計(jì)使用3號端 口。(2)在線用戶主機(jī)IP列表的維護(hù)。在用戶發(fā)送信息之前,需要選擇相應(yīng)的目的地 端IP,這也就需要客戶端擁有在線用戶主機(jī)的 IP地址,這個(gè)在線主機(jī)列表的維護(hù)是需 要客戶端定時(shí)自動向服務(wù)器端發(fā)送信息,服務(wù)器端收集并維護(hù)在線用戶列表,再發(fā)送回 客戶端。需要在客戶端和服務(wù)器端都使用定時(shí)器來完成此功能。此功能預(yù)計(jì)使用1、2號端口。(3 )在C/S模式中,

4、服務(wù)器與客戶端是相互依賴的。在客戶端啟用以后,需要查 看服務(wù)器端是否在線,服務(wù)器在線才能正常使用客戶端,如果服務(wù)器不在線,則在檢測 一定次數(shù)以后自動退出客戶端程序。在使用過程中,客戶端在指定時(shí)間內(nèi)未向服務(wù)器端 發(fā)送信息的,服務(wù)器認(rèn)為客戶端下線;客戶端在一定時(shí)間內(nèi)未收到服務(wù)器端信息的,認(rèn) 為服務(wù)器已經(jīng)下線,則提示用戶并建議退出,在用戶一定時(shí)間后沒有退出的則自動關(guān)閉 客戶端程序。2.2數(shù)據(jù)需求分析(1)客戶端之間聊天信息。在控件上顯示時(shí)格式化,更易于用戶的查看自己發(fā)送 或接收到的信息。(2 )在線用戶聊天信息。服務(wù)器端存放在適當(dāng)?shù)目臻g中,在發(fā)送給客戶端時(shí),對 信息列表進(jìn)行格式化,便于客戶端提取信息

5、。(3)客戶端向服務(wù)器端發(fā)送的確認(rèn)在線信息。包括客戶端剛剛啟動時(shí)的初始化信 息和在使用過程中的確認(rèn)在線信息。(4 )其它程序內(nèi)部可能需要設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)體。2.3性能需求分析(1 )可靠性高,能在由于系統(tǒng)問題或其它原因產(chǎn)生錯誤后,作出相對應(yīng)處理,比 如網(wǎng)絡(luò)初始化失敗、服務(wù)器不在線等,可以提示用戶安全退出本程序,在出現(xiàn)不可知的 錯誤以后,可以盡量安全的退出程序。在程序的設(shè)計(jì)過程中,要求能盡可能多的設(shè)想到 用戶使用過程中可能發(fā)生的事件,并能在判斷事件后做出相應(yīng)的處理,使程序具有較高 的容錯性能0( 2 )宜操作性,程序簡單易懂,容易上手使用。設(shè)計(jì)界面是,簡化界面的復(fù)雜性,模擬QQ等現(xiàn)有即時(shí)通訊工具的

6、界面,使用戶能很容易看懂并使用。(3 )開發(fā)文檔易理解,保證以后自己二次開發(fā)或他人接手開發(fā)時(shí),能夠清晰的理 解整個(gè)系統(tǒng)的設(shè)計(jì)思路和實(shí)現(xiàn)細(xì)節(jié)。(4) 模塊化設(shè)計(jì)此軟件的功能,不同的模塊實(shí)現(xiàn)不同的功能,使得軟件易于以后 的維護(hù)與擴(kuò)展,在以后可以更好的完善本軟件的功能,更方便于在工作中的應(yīng)用。2.4運(yùn)行需求分析(1 )用戶界面程序較小,啟動速度快??稍诰W(wǎng)絡(luò)中使用,有注冊功能,需進(jìn)行用戶登錄。啟動后 的應(yīng)用界面要清爽,設(shè)計(jì)要簡單明了,要具有較高的易用性。(2 )故障處理在遇到可預(yù)知的故障與情況時(shí),能提示用戶并自動退出;在遇到不可預(yù)知的故障時(shí) 能安全退出。3設(shè)計(jì)原理3.1聊天程序的工作原理QQ聊天程序采

7、用的是C/S通信模式,即客戶/服務(wù)模式,它把一個(gè)應(yīng)用劃分成功能 不同的兩個(gè)部分,分別在不同的計(jì)算機(jī)上運(yùn)行,其中一個(gè)為服務(wù)端程序,用來響應(yīng)和提 供固定的服務(wù),一個(gè)為客戶端程序,用來向服務(wù)端提出請求和要求某種服務(wù)。在數(shù)量關(guān) 系上,通常有一對一的(即一個(gè)服務(wù)端程序和一個(gè)客戶端程序之間通信),也有一對多的(即一個(gè)服務(wù)端程序和多個(gè)客戶端程序之間通信),也有多對多的(即多個(gè)服務(wù)端程 序和多個(gè)客戶端程序之間通信)。所謂服務(wù)端程序、客戶端程序也是相對的概念,有時(shí) 在一個(gè)程序中既有服務(wù)端又有客戶端的功能。QQ聊天程序分成了兩個(gè)程序,一個(gè)安裝在騰訊公司的服務(wù)器上,我們稱之為服務(wù)端程序,一個(gè)安裝在QQ用戶的計(jì)算機(jī)上

8、,我們稱之為客戶端程序。在許多介紹網(wǎng)絡(luò)通信編程的書籍中有關(guān)網(wǎng)絡(luò)聊天的例子,當(dāng)一個(gè) 客戶要與另一個(gè)客戶聊天時(shí),第一個(gè)客戶先把聊天數(shù)據(jù)發(fā)送給服務(wù)器,然后服務(wù)器再把 聊天數(shù)據(jù)轉(zhuǎn)發(fā)給第二個(gè)客戶,服務(wù)器好像一個(gè)中轉(zhuǎn)站,這在客戶數(shù)量比較少時(shí),服務(wù)器 還能承受,在客戶數(shù)量比較多時(shí),服務(wù)器肯定要癱瘓。何況客戶之間還要傳送文件、語 音聊天、視頻聊天等等,為了減少服務(wù)器的壓力,各客戶端之間需要直接通信。(1)在服務(wù)端和客戶端之間(一對多)用于客戶端程序登錄,驗(yàn)證用戶密碼,獲取其它在線好友信息等等。(2)在客戶端和客戶端之間(多對多)用于在線好友間直接通信聊天。此時(shí)每個(gè)客戶端程序上既有實(shí)現(xiàn)服務(wù)端功能的部 分,又有實(shí)

9、現(xiàn)客戶端功能的部分,前者用于接收聊天數(shù)據(jù),后者用于發(fā)送聊天數(shù)據(jù)。在用C/S模式進(jìn)行通信時(shí),作為客戶端在請求與服務(wù)端連接時(shí)需要知道服務(wù)端的IP地址,騰訊公司的服務(wù)器具有固定的公網(wǎng)地址,這沒有問題。但是在客戶端和客戶端之 間通信時(shí),每個(gè)用戶的IP地址都是ISP所給的臨時(shí)地址,無法固定,那么某個(gè)用戶要 與另一個(gè)用戶連接時(shí),怎么知道對方的IP地址呢?當(dāng)一個(gè)用戶連接到In ternet后,獲得 了一個(gè)臨時(shí)的公網(wǎng)地址,當(dāng)?shù)卿浀?QQ時(shí),QQ服務(wù)端會獲得該上線用戶的IP地址,然 后告知其他要與該上線用戶聊天的用戶,其他用戶就可以連接該用戶與之直接通信了。在Win 32平臺上,對于眾多的基層網(wǎng)絡(luò)協(xié)議, Win

10、 sock是訪問它們的首選接口。女口 果想從頭開發(fā)一個(gè)網(wǎng)絡(luò)通信應(yīng)用程序,TCP/IP就是首選協(xié)議之一。為了保證可靠的數(shù)據(jù) 傳輸,宜選擇TCP協(xié)議3。3.2 TCP/IP 協(xié)議的簡寫,中文譯名In ternet最基本的IP協(xié)議和傳輸層的TCP/IP (Transmission Control Protocol/Internet Protocol)為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,又叫網(wǎng)絡(luò)通訊協(xié)議,這個(gè)協(xié)議是 協(xié)議、In ternet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),簡單地說,就是由網(wǎng)絡(luò)層的TCP協(xié)議組成的網(wǎng)際協(xié)議IP是TCP/IP的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議IP層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動程

11、序) 發(fā)來的數(shù)據(jù)包,并把該 數(shù)據(jù)包發(fā)送到更高層-TCP或UDPg;相反,IP層也把從TCP或 UDPg接收來的數(shù)據(jù) 包傳送到更低層。IP數(shù)據(jù)包是不可靠的,因?yàn)镮P并沒有做任何事情來確認(rèn)數(shù)據(jù)包是按 順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它 的主機(jī)的地址(目的地址)。高層的TCP和UDPK務(wù)在接收數(shù)據(jù)包時(shí),通常假設(shè)包中的源地址是有效的。也 可以這樣說,IP地址形成了許多服務(wù)的認(rèn)證基礎(chǔ),這些服務(wù)相信數(shù)據(jù)包是從一個(gè)有效的 主機(jī)發(fā)送來的。IP確認(rèn)包含一個(gè)選項(xiàng),叫作IP source routing ,可以用來指定一條源 地址和目的地址之間的直接路徑。 對于一些TCP

12、和UDP的服務(wù)來說,使用了該選項(xiàng)的IP 包好像是從路徑上的最后一個(gè)系統(tǒng)傳遞過來的,而不是來自于它的真實(shí)地點(diǎn)。這個(gè)選項(xiàng) 是為了測試而存在的,說明了它可以被用來欺騙系統(tǒng)來進(jìn)行平常是被禁止的連接。那么,許多依靠IP源地址做確認(rèn)的服務(wù)將產(chǎn)生問題并且會被非法入侵 。如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向上傳送到TCP 層。TCP將包排序并進(jìn)行錯誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包中包括序號和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。TCP將它的信息送到更高層的應(yīng)用程序,例如Telnet的服務(wù)程序和客戶程序。應(yīng)用 程序輪流將信息送回TCP層,TCP層便將它

13、們向下傳送到IP層,設(shè)備驅(qū)動程序和物理介 質(zhì),最后到接收方。面向連接的服務(wù)(例如 Tel net、FTP rlogin、X Win dows和SMTP需要高度的可 靠性,所以它們使用了 TCP DNS在某些情況下使用TCP(發(fā)送和接收域名數(shù)據(jù)庫),但 使用UDP專送有關(guān)單個(gè)主機(jī)的信息。3.3套接字編程原理在TCP/IP網(wǎng)絡(luò)中兩個(gè)進(jìn)程間的相互作用的主機(jī)模式是客戶機(jī)/服務(wù)器模式(Clie nt/Server model) 。該模式的建立基于以下兩點(diǎn):1、非對等作用;2、通信完全 是異步的。客戶機(jī)/服務(wù)器模式在操作過程中采取的是主動請示方式:首先服務(wù)器方要先啟動,并根據(jù)請示提供相應(yīng)服務(wù):(過程如下)

14、(1) 打開一通信通道并告知本地主機(jī),它愿意在某一個(gè)公認(rèn)地址上接收客戶請求。(2) 等待客戶請求到達(dá)該端口。(3) 接收到重復(fù)服務(wù)請求,處理該請求并發(fā)送應(yīng)答信號。(4) 返回第二步,等待另一客戶請求(5) 關(guān)閉服務(wù)器。客戶方:(1) 打開一通信通道,并連接到服務(wù)器所在主機(jī)的特定端口。(2) 向服務(wù)器發(fā)送服務(wù)請求報(bào)文,等待并接收應(yīng)答;繼續(xù)提出請求(3) 請求結(jié)束后關(guān)閉通信通道并終止。所謂的客戶客戶端/服務(wù)器。是一種能夠在基于網(wǎng)絡(luò)環(huán)境的分布處理過程中,使用基于連接的網(wǎng)絡(luò)通信模型。該通信模型首先在客戶機(jī)和服務(wù)器之間定義一套通信協(xié)議,并 創(chuàng)建一個(gè)Socket類,利用這個(gè)類來建立一條可靠的鏈接;然后,客

15、戶端/服務(wù)器再在這條連接上可靠地傳輸數(shù)據(jù)??蛻舳税l(fā)出請求,服務(wù)器發(fā)出請求,服務(wù)器監(jiān)聽來自客戶機(jī) 的請求,并為客戶端提供相應(yīng)服務(wù)。利用Socket類,我們可以輕松地實(shí)現(xiàn)網(wǎng)路客戶端程序的編寫,Socket類的一些常用 的方法匯總?cè)缦拢篻etLocalAddress()讀取套接字對象的本地地址getLocalPort()讀取套接字所使用的本地端口號getl nputStream()得到一個(gè)輸入流。getOutputStream()得到一個(gè)輸出流。通常情況下,客戶端只要能夠順序地處理服務(wù)器程序的響應(yīng)就可以了,因此客戶端 程序通常不用使用多線程3.4 Eclipse開發(fā)環(huán)境Eclipse最初是由IBM公

16、司開發(fā)的替代商業(yè)軟件 Visual Age for Java的下一代IDE開 發(fā)環(huán)境,是著名的跨平臺的自由集成開發(fā)環(huán)境。 最初主要用來Java語言開發(fā),但是目前 亦有人通過插件使其作為其他計(jì)算機(jī)語言比如 C+和Python的開發(fā)工具。Eclipse的本身只是一個(gè)框架平臺,但是眾多插件的支持使得 Eclipse擁有其他功能 相對固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以 Eclipse為框架開發(fā)自己的 IDE。Eclipse采用的技術(shù)是IBM公司開發(fā)的(SWT),這是一種基于Java的窗口組件, 類似Java本身提供的AWT和Swing窗口組件;不過IBM聲稱SWT比其他Java窗口 組

17、件更有效率。Eclipse的用戶界面還使用了 GUI中間層JFace從而簡化了基于SWT 的應(yīng)用程序的構(gòu)建。Eclipse的插件機(jī)制是輕型軟件組件化架構(gòu)。在富客戶機(jī)平臺上,Eclipse使用插件來提供所有的附加功能,例如支持 Java以外的其他語言。已有的分離的插件已經(jīng)能夠支持C/C+( CDT )、Perl、Ruby,Pytho n、tel net和數(shù)據(jù)庫開發(fā)。插件架構(gòu)能夠支持將 任意的擴(kuò)展加入到現(xiàn)有環(huán)境中,例如配置管理,而決不僅僅限于支持各種編程語言。Eclipse的設(shè)計(jì)思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的 形式附加于Eclipse核心之上。Eclipse基本

18、內(nèi)核包括:圖形 API (SWT/Jface),Java開 發(fā)環(huán)境插件(JDT),插件開發(fā)環(huán)境(PDE)等54設(shè)計(jì)步驟4.1聊天室的總體設(shè)計(jì)聊天室的總體設(shè)計(jì)過程比較簡單主要是構(gòu)建設(shè)計(jì)框圖。,就是當(dāng)客戶端發(fā)出信息時(shí), 我們將數(shù)據(jù)寫到socket,當(dāng)對方有數(shù)據(jù)到達(dá)時(shí),我們從socket讀出來并顯示給客戶。程 序關(guān)鍵在于如何監(jiān)聽到有信息到達(dá)的過程。應(yīng)用程序流程圖如下圖所示,開始是先創(chuàng)建 主窗口,然后初始化窗口,程序下面才開始消息循環(huán)處理。如果沒有消息循環(huán)的活,直 接結(jié)束掉這個(gè)程序。如果有循環(huán)的話,要判斷這個(gè)窗口消息的內(nèi)容是哪種類型,然后再 進(jìn)行選擇處理方式。然后依據(jù)不同的內(nèi)容選擇創(chuàng)建控件”還是要 判

19、斷命令”或是分別處理各種socket的消息。流程圖如圖4-1所示圖4-1聊天室設(shè)計(jì)架構(gòu)圖4.2聊天室的模塊聊天室主要包括三個(gè)模塊,服務(wù)器模塊、客戶端模塊、信息處理模塊。該聊天室可 以支持多人聊天,只支持文本信息。(1)服務(wù)器模塊其所包含的函數(shù)模塊如下圖所示-JJ ChitStrvi cfi. j ava- ChatServi cees csinstance)o userList占 ChatSarvi ca ()爭(String String)G addUer (String Strin) Q SetlflsgOS loadUser C)B sveUserLi st 00 vsli iLogin

20、 (String StringJ圖4-2服務(wù)器模塊圖(2)客戶端模塊客戶端所包含的函數(shù)模塊如下圖所示-;Jj Chatoervlet j aa-歸 ChatS rvlt農(nóng) CKatStrvle t ()d destroy0dcGet QfttpServletRequsEt, HttpSerYletHeaponse) k dcPost (HttpServletRequ&st. Kt tpServl*tRespouse) Q ini t 0d servi ce (Ht tpEwBletReqiizt.HttpS ervl etRe spouse圖4-3客戶端模塊圖(3) 信息處理模塊信息處理模塊包

21、括注冊信息及登錄信息的處理模塊,其所包含的函數(shù)模塊如下圖所示日 !; LcginServlet. j ava 日令 Logicservlet g Lq gi nS ervl e t 0 血 destroy()a doGet OHttpServletRe:quest7 HttpServltResponse.)d dcFost GHttpServletKftquest, HttpServletRsponse)G forward (Str in召 Ht tpServl電 tRequs J KttpS ervl etE.e spouee Jh d ini t 0価 servic* OrlttpServ

22、l虐tRequasHttpStrvltRe雪poilse) 占迪日ervl a t& RegServlet ()化 destroy()Ck doGet OHttpServletRequestz HttpServletResponse)d doFost CKttpServltKsquest, HttpServletsponse)G forward (Str i血召 Ht tpServl tRequ電e J KttpS&rvl 隹tRe spduee)4 ini t 0伍 service (Ht tpS ervl e tR 豐 qua 雪 J Ht tpS er vie tRe 雪 p ons e

23、 )圖4-4信息處理模塊圖4.3程序的調(diào)試聊天室的程序模塊如下圖所示圖4-5聊天室程序模塊圖程序運(yùn)行后,用戶注冊界面如下圖所示圖4-6用戶注冊界面用戶登錄界面如下圖所示請輸入用戶名和密碼登陸圖4-7用戶登錄界面進(jìn)入聊天室的聊天界面如下圖所示聊天貝面lohot oi5: jar圖4-8聊天室界面可以進(jìn)行多人聊天,多人聊天如下圖所示聊天貢面,匚U說】大家奸乂說:中國駅怎么樣?lohcrto說:中國佻vn站說:中國隊(duì)被分入“死亡之組和IchQf:詩蘭,阿根廷,科特迪瓦vnsm5t:烏商苣陽的比賽中國隊(duì)以:憶告負(fù)&而與阿根廷的比賽、中國隊(duì)排出前瞬來有的詢:0: 0陣型.在補(bǔ) 時(shí)階段,郝海東射門,球被對

24、方守門員補(bǔ)出,此時(shí)地震突克 球滾入球門,中國臥以1: D取勝*lohotoija:與科將迪瓦的比賽則昱一名狂熱女球迷裸身謹(jǐn)入球場,稱中國趴誦進(jìn)一球,宙此,中國風(fēng)進(jìn)入十六 強(qiáng),迎戰(zhàn)葡萄牙隊(duì)vnsnit該煬比務(wù)的荻勝源自李鐵的腳法失誤桿誤播進(jìn)了球。lohot 03:其肓便皇與德國隊(duì)開戰(zhàn),中國陽事先買逋了栽判塁索里尼,以h 0淘法德國乂。在準(zhǔn)決賽中,中國的對手是日豐,中國隊(duì)上下1心,用八年時(shí)間戰(zhàn)勝了日本*vnwM忠 決賽申,中國馭迎戰(zhàn)巴西趴。李戟一個(gè)護(hù)球長達(dá)印分鐘,結(jié)果四郝海東體力卞支倒在荼匱內(nèi),曲中國肚換 爭點(diǎn)瑋,最終以1= 口荻謁世界杯冠軍。乂說:中國隊(duì)舅奪世界杯? ? ?圖4-9多人聊天5問題

25、分析首先是對QQ軟件的需求分析還有工作原理的熟悉,雖然平日用的已經(jīng)很熟練了, 但原理方面的知識還是有點(diǎn)模糊,通過對資料的學(xué)習(xí)及一些小程序的運(yùn)行,聊天方面的 原理才漸漸清晰。由于之前沒有學(xué)過Java,所以對Eclipse編程環(huán)境幾乎是一無所知,在程序編譯過 程中遇到的問題比較多,主要是對那些錯誤還有警告開始都不知道什么意思,花了兩天 的時(shí)間在程序的調(diào)試上面。另外就是一些概念性的知識欠缺,尤其是套接字編程原理, 所以對程序的一些函數(shù)的功能用法有些模糊。其實(shí)遇到的種種問題主要是兩方面的原因。一個(gè)是基礎(chǔ)知識的掌握不夠牢固,概念 的混淆,不能夠很快的用最佳的方式去解決遇到的問題等等,都是由于知識的不熟練

26、導(dǎo) 致。另一個(gè)就是Java部分知識的缺乏,導(dǎo)入文件還有一些參數(shù)的選擇都要查詢一下資 料,主要是第一次操作這方面的知識。針對這些問題,主要從兩個(gè)方面著手處理應(yīng)該, 一方面是多對所學(xué)過的知識強(qiáng)化溫習(xí),做到熟能生巧,溫故知新。另一方面就是準(zhǔn)備的 不夠充分,之前應(yīng)該及早的對所需軟件進(jìn)行熟悉,在以后的實(shí)習(xí)過程中需要注意。6總結(jié)網(wǎng)絡(luò)的課程設(shè)計(jì),之前沒有接觸過網(wǎng)絡(luò)編程的語言,所以感覺難度比較大,也因?yàn)?如此,在找資料及向老師同學(xué)的請教中學(xué)到了很多的東西。這次的課程設(shè)計(jì)是簡單聊天程序,在平日的生活學(xué)習(xí)中,可以說QQ等即時(shí)通訊軟件已占據(jù)重要的位置,也深受大家的喜愛,所以這個(gè)課程設(shè)計(jì)很有現(xiàn)實(shí)意義,做起來也 比較感

27、興趣。在具體做的過程中,參考了網(wǎng)絡(luò)班同學(xué)還有學(xué)長的一些程序,雖然這個(gè)聊 天室的界面及功能比較簡單,但從代碼的編寫及結(jié)果的調(diào)試成功還是花了很多的心思。 尤其是剛開始用Eclipse軟件的時(shí)候,從完全陌生到慢慢的了解,這其中的過程對應(yīng)用 方面知識的提高有很大的幫助。課程設(shè)計(jì)項(xiàng)目的雖然要求是獨(dú)立完成, 但還是很多問題的解決離不開老師的指導(dǎo)及 同學(xué)之間的探討,這些在做項(xiàng)目的時(shí)候都是必不可少的。學(xué)校提供了設(shè)計(jì)的機(jī)房還有老 師的悉心指導(dǎo),這些跟課程設(shè)計(jì)的順利完成都是密不可分的,在這里感謝大家?guī)淼膸?助。另外就是知識方面的問題,計(jì)算機(jī)網(wǎng)絡(luò)和Java Sockets很多方面的知識還是很不熟 悉,具體用到的時(shí)

28、候就感覺生疏,或者還是缺乏設(shè)計(jì)方面的實(shí)踐。課程設(shè)計(jì)的機(jī)會不是 很多,由于所學(xué)的知識包含了太多的方面,所以實(shí)踐方面還是遠(yuǎn)遠(yuǎn)不夠,希望在學(xué)校期 間能夠多一些類似的機(jī)會。雖然課程設(shè)計(jì)順利的完成了,但由于水平有限,還是有很多的欠缺跟不足之處,希 望老師給予指正參考文獻(xiàn)1 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò).北京:電子工業(yè)出版社,20092 Y.Daniel Liang. Java語言程序設(shè)計(jì).北京:機(jī)械工業(yè)出版社,20083 賽奎春.JSP工程應(yīng)用與項(xiàng)目實(shí)踐.北京:機(jī)械工業(yè)出版社,20054 Ian F.Darwin. Java經(jīng)典實(shí)例.北京:中國電力出版社,1999 丁振凡.Java語言實(shí)用教程.北京:北京郵電大學(xué)

29、出版社,2005附錄1服務(wù)器程序清單/ ChatService.javapackage lee;import java.util.*;import java.io*;public class ChatServiceprivate static ChatService cs;private Properties userList;private Lin kedListvStri ng chatMsg;private ChatService()public static ChatService in sta nce()if (cs = n ull)cs = new ChatService();re

30、turn cs;public boolea n validLog in( Stri ng user , String pass)throws lOExcepti onif (loadUser().getProperty(user) = n ull)return false;if (loadUser().getProperty(user).equals(pass)return true;return false;public boolea n addUser(Stri ng n ame , String pass)throws Excepti onif (userList = n ull)use

31、rList = loadUser();if (userList.co ntai nsKey( name)throw new Exceptio n(”用戶名已經(jīng)存在,請重新選擇用戶名);userList.setProperty (n ame , pass);saveUserList();return true;public Stri ng getMsg()if (chatMsg = null)chatMsg = new Lin kedList(); return ;Stri ng result =;for (String tmp : chatMsg)result += tmp + n;retur

32、n result;public void addMsg(Stri ng user , String msg)if (chatMsg = null)chatMsg = new Lin kedListvStri ng();if (chatMsg.size() 40)chatMsg.removeFirst();chatMsg .add(user + 說:+ msg);/下面是系統(tǒng)的工具方法/private Properties loadUser()throws lOExcepti on if (userList = n ull)File f = new File(userFpertie

33、s); if (!f.exists()f.createNewFile();userList = new Properties();userList.load(new FilelnputStream(f);return userList;private boolean saveUserList()throws lOExceptionif (userList = n ull)return false;userList.store( new FileOutputStream(userFperties), userList); return true;附錄2:客戶端程序清單/ChatSe

34、rvlet.javapackage lee;import java.io .1 OExceptio n;import java.io.Pri ntWriter;import javax.servlet.ServletExcepti on;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResp on se;import javax.servlet.ServletExcepti on;import java

35、x.servlet.ServletC on text;import javax.servlet.RequestDispatcher;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResp on se;import java.io.Pri ntWriter;import java.io .1 OExceptio n;public class ChatServlet exte nds HttpServlet

36、 /* Con structor of the object.*/public ChatServlet() super();/*Destruct ion of the servlet. */public void destroy() super.destroy(); / Just puts destroy stri ng in log/ Put your code hereThe doGet method of the servlet. This method is called when a form has its tag value method equals to get.* param request the request send by the clie nt to the server* param resp onse the resp onse send by the server to the clie nt* throws ServletExcepti on if an error occurred* throws IOException

溫馨提示

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

評論

0/150

提交評論