JAVA網(wǎng)絡(luò)聊天程序(畢業(yè)論文).doc_第1頁
JAVA網(wǎng)絡(luò)聊天程序(畢業(yè)論文).doc_第2頁
JAVA網(wǎng)絡(luò)聊天程序(畢業(yè)論文).doc_第3頁
JAVA網(wǎng)絡(luò)聊天程序(畢業(yè)論文).doc_第4頁
JAVA網(wǎng)絡(luò)聊天程序(畢業(yè)論文).doc_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

編號 本科生畢業(yè)設(shè)計網(wǎng)絡(luò)聊天程序network chat program學(xué) 生 姓 名專 業(yè)計算機(jī)科學(xué)與技術(shù)學(xué) 號指 導(dǎo) 教 師學(xué) 院計算機(jī)科學(xué)技術(shù)2009年6月- 54 -長春理工大學(xué)畢業(yè)設(shè)計摘 要隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)聊天工具已經(jīng)作為一種重要的信息交流工具,受到越來越多的網(wǎng)民的青睞。目前聊天工具應(yīng)用比較廣泛的有netmeeting、騰訊qq、msn-messager等等。該系統(tǒng)開發(fā)主要包括一個網(wǎng)絡(luò)聊天服務(wù)器程序和一個網(wǎng)絡(luò)聊天客戶程序。前者通過socket套接字建立服務(wù)器,服務(wù)器能讀取、轉(zhuǎn)發(fā)客戶端發(fā)來信息,并能刷新用戶列表。后者通過與服務(wù)器建立連接,來進(jìn)行客戶端與客戶端的信息交流。其中用到了局域網(wǎng)通信機(jī)制的原理,通過直接繼承thread類來建立多線程。經(jīng)過分析這些情況,該局域網(wǎng)聊天工具采用eclipse為基本開發(fā)環(huán)境和java語言進(jìn)行編寫,首先可在短時間內(nèi)建立系統(tǒng)應(yīng)用原型,然后,對初始原型系統(tǒng)進(jìn)行不斷修正和改進(jìn),直到形成可行系統(tǒng)。關(guān)鍵詞:網(wǎng)絡(luò) 聊天 套接字 javaabstractalong with the fast development of internet, the network chating tool has already become one kind of important communication tools and received more and more web cams favor. at present, chat tools have a broader application of netmeeting, tencent qq, msn-messager, etc. this system development mainly includes two aspects of the server procedure of the network chat and the customer procedure of the network chat. the former establishes the server through the socket, the server can read and deliver the information which client side sends, and can renovate the users tabulation. the latter make a connection with the server, carries on communication between the client side and the client side. after analyzes these situations, this lan chating tool takes eclipse as the basic development environment and compiles in java language. first, it will establish the system application prototype in a short time. then, for the initial prototype system, it needs constantly revised and improved, until a viable system.key words: network chat socket java目錄第一章概論- 1 -1.1課題來源- 1 -1.2國內(nèi)外研究現(xiàn)狀- 1 -第二章java的網(wǎng)絡(luò)功能與編程- 3 -2.1 java概述- 3 -2.2 java的特點(diǎn)- 3 -2.3 java語言在網(wǎng)絡(luò)上的應(yīng)用- 7 -第三章總體設(shè)計- 9 -3.1 需求分析- 9 -3.2 設(shè)計要點(diǎn)- 9 -3.3 功能模塊及設(shè)計步驟- 10 -3.1.1 功能模塊- 10 -3.1.2 設(shè)計步驟- 10 -第四章詳細(xì)設(shè)計與實(shí)現(xiàn)- 12 -4.1 開發(fā)環(huán)境- 12 -4.2 核心功能實(shí)現(xiàn)- 12 -4.2.1 socket的簡介- 12 -4.2.2 服務(wù)器與客戶端之間的通信- 14 -4.2.3 流程圖- 15 -4.3 功能模塊的測試- 18 -總結(jié)- 22 -致謝- 23 -參考文獻(xiàn)- 24 -附錄- 25 -第一章概論1.1課題來源隨著當(dāng)前網(wǎng)絡(luò)的迅速流行,網(wǎng)上聊天已經(jīng)越來越受網(wǎng)民所青睞。因此開發(fā)網(wǎng)絡(luò)聊天程序已經(jīng)是相當(dāng)有必要。同時在網(wǎng)站內(nèi)增加聊天功能,它不僅可以提高網(wǎng)站的訪問量,同時可以留著訪客,更重要的是讓訪客透過聊天室實(shí)時的互相交流。目前應(yīng)用比較廣泛的有netmeeting、騰訊qq、msn-messager等為了加深對java編程語言的理解,本人選擇了以網(wǎng)絡(luò)聊天程序?yàn)楫厴I(yè)設(shè)計,并希望通過這一次的設(shè)計編程能進(jìn)一步提高本人的網(wǎng)絡(luò)開發(fā)編程的能力,以及對java語言的更深的掌握,了解編程的基本步驟。1.2國內(nèi)外研究現(xiàn)狀網(wǎng)絡(luò)聊天軟件現(xiàn)狀網(wǎng)絡(luò)上已有聊天工具按照其功能大概可以分為四大類:其一是單一的即時通訊工具,如qq,aim,msn messenger ,yahoo messenger特點(diǎn)是主要是進(jìn)行通訊,包括語音,文本以及視頻等。其二在通訊上附加了娛樂,p2p功能,如uc,popo ,他們除了可以進(jìn)行聊天之外還可以傳輸文件,快捷,方便。 其三是以p2p功能為主,同時可以文本聊天。其四就是在一個軟件中可以把其他聊天通訊工具集成過來,當(dāng)然這種集成是可以通過多種方式的,比如trillian是安裝一個軟件替代其他的,并可以與其他的進(jìn)行通訊,目前包括msn messenger, yahoo messenger ,還有odigo它則是把其他的即時通訊工具作為外掛集合起來的,但是也不錯啊,這樣可以避免哪個聊天工具上朋友被漏掉。相比較這四類,它們更有特色。但目前它們大多都融合了別的工具的功能,成為網(wǎng)絡(luò)上很重要的通訊和娛樂工具。就說我們大家都很熟悉的qq來說吧,它現(xiàn)在已經(jīng)集聊天、娛樂甚至購物等功能于一身,已經(jīng)是網(wǎng)友們離不開的網(wǎng)絡(luò)工具之一。2展望:簡單的說,在國內(nèi)qq遍地都是的時候, uc也悄悄的出現(xiàn),真實(shí)定義為university comunicate,取you see you say之音。該聊天工具不公可以讓我們相互聊天,同時娛樂,還可以自主開發(fā)相應(yīng)插件,定制自己的uc。盡管現(xiàn)在它還不是很穩(wěn)定,也不是功能很強(qiáng)大,但是一旦成熟起來,將是很吸引人的。通過對即時通訊工具的長期觀察和使用,就會發(fā)現(xiàn),即時通訊工具要經(jīng)營的好,就必須得象qq一樣,要引領(lǐng)一種文化者說氣氛,微軟為什么要研發(fā)三度(threedegrees),微軟是致力于培養(yǎng)“網(wǎng)絡(luò)一代”成為其忠實(shí)用戶,目標(biāo)用戶是那些十幾歲的孩子和年輕的成年人。微軟的研究發(fā)現(xiàn)伴隨網(wǎng)絡(luò)成長起來的年輕一代與過去的一代在網(wǎng)絡(luò)生活中有很大的不同,只有根據(jù)不同的行為習(xí)慣設(shè)計合適的軟件才能吸引他們。網(wǎng)絡(luò)聊天室是當(dāng)今廣泛應(yīng)用的一種網(wǎng)絡(luò)服務(wù), 它為廣大網(wǎng)民提供了一種方便快捷的溝通方式, 在線聊天是上網(wǎng)的重要活動之一。第十六次cnnic 調(diào)查結(jié)果顯示: 在網(wǎng)絡(luò)用戶經(jīng)常使用的網(wǎng)絡(luò)服務(wù)/功能調(diào)查中, 網(wǎng)上聊天( 聊天室、qq、icq 等)占被調(diào)查人群的42.6%, 處于第四位,是一個很可觀的數(shù)字。在網(wǎng)站由窄帶向?qū)拵Оl(fā)展的今天, 新一代的聊天室充分利用富媒體技術(shù), 以嶄新的形象吸引受眾視聽。文本方式聊天室: 基于web 的聊天室有其獨(dú)特的優(yōu)勢。它不需要安裝專門的軟件,web 瀏覽器就可以使用聊天服務(wù);它集成在web 服務(wù)器中,不需額外的硬件支持,便于廣大中小型客戶建設(shè)和使用。所以, 基于web 的聊天室仍然被廣泛采用。但是單純聊天的一般內(nèi)容比較單一,主要局限于角色認(rèn)知過程中職業(yè)、地域、性別等方面的擴(kuò)展。視頻聊天室、語音聊天室、動畫聊天室: 隨著富媒體技術(shù)的廣泛應(yīng)用, 一種結(jié)合文本、語音和人臉動畫或視頻的三維語音視頻聊天室在互聯(lián)網(wǎng)上出現(xiàn)。比如碧聊、e 聊視頻聊天室等。視頻聊天室、語音聊天室主要特點(diǎn)是利用寬帶技術(shù), 在聊天室中增加視頻與語音功能。動畫聊天室的一般模式是由客戶端和服務(wù)器兩部分組成, 多個用戶利用客戶端連接到服務(wù)器上, 用戶可以輸入文本并且選擇各種表情, 由客戶端混合成帶有表情標(biāo)簽的文本傳送給服務(wù)器。服務(wù)器將該用戶的三維人臉模型以及帶有表情標(biāo)簽的文本傳送給接收方, 由接收方的客戶端合成為帶有表情的語音動畫。這種多媒體技術(shù)的應(yīng)用使聊天室進(jìn)行網(wǎng)上直播、進(jìn)行才藝展示、建設(shè)邊娛樂邊聊天的社區(qū)服務(wù)模式成為可能。復(fù)合聊天室: 典型代表是uc 聊天室, 它打破了傳統(tǒng)im軟件主要用于文字通訊的單一模式, 將有聲有色、圖文并茂的場景融入聊天模式, 加之視頻電話、可斷點(diǎn)續(xù)傳的文件傳輸、消息群發(fā)功能和在線游戲功能以及同學(xué)錄( 團(tuán)體) 等有機(jī)結(jié)合, 形成一個完整的網(wǎng)上即時通訊娛樂平臺, 帶來聊天新感覺。第二章java的網(wǎng)絡(luò)功能與編程2.1 java概述美國硅谷有一句行話,每10年15年有一次輪回。最近的一次輪回就是從java開始。java是一個由sun公司開發(fā)而成的新一代編程語言。使用它可在各式各樣不同種機(jī)器、不同種操作平臺的網(wǎng)絡(luò)環(huán)境中開發(fā)軟件。不論用戶使用的是哪一種www瀏覽器,哪一種計算機(jī),哪一種操作系統(tǒng),只要www瀏覽器上面注明了“支持java”,用戶就可以看到生動的主頁。java正在逐步成為internet應(yīng)用的主要開發(fā)語言。它徹底改變了應(yīng)用軟件的開發(fā)模式,帶來了自pc機(jī)以來又一次技術(shù)革命,為迅速發(fā)展的信息世界增添了新的活力。java1.0版在1996年年初正式發(fā)表。java帶來的影響java雖出現(xiàn)的時間不長,但已被業(yè)界接受,ibm、apple、dec、adobe、silicongraphics、hp、oracle、toshiba、netscap和microsoft等大公司已經(jīng)購買了java的許可證。microsoft還在其web瀏覽器explorer3.0版中增加了對java的支持。另外,眾多的軟件開發(fā)商也開發(fā)了許多支持java的軟件產(chǎn)品。如:borland公司的基于java的快速應(yīng)用程序開發(fā)環(huán)境latte;metrowerks公司和naturalintelligence公司分別開發(fā)的基于machintosh的java開發(fā)工具;sun公司的java開發(fā)環(huán)境javaworkshop;microsoft也開發(fā)出系列java產(chǎn)品。數(shù)據(jù)庫廠商如illustra,sybase,versant,oracle都在開發(fā)支持html和java的cgi(commongatewayinterface)。在以網(wǎng)絡(luò)為中心的計算時代,不支持html和java,就意味著應(yīng)用程序的應(yīng)用范圍只能限于同質(zhì)的環(huán)境。intranet正在成為企業(yè)信息系統(tǒng)最佳的解決方案。它的優(yōu)點(diǎn)表現(xiàn)在:便宜、易于使用和管理。用戶不管使用何種類型的機(jī)器和操作系統(tǒng),界面是統(tǒng)一的web瀏覽器,而數(shù)據(jù)庫、web頁面、應(yīng)用程序(用java編的applet)則存在www服務(wù)器上。開發(fā)人員只需維護(hù)一個軟件版本,管理人員省去了為用戶安裝、升級、培訓(xùn)之苦,用戶則只需一個操作系統(tǒng),一個internet瀏覽器足矣。12.2 java的特點(diǎn)(一)java的主要特點(diǎn)java語言有下面一些特點(diǎn):簡單、面向?qū)ο蟆⒎植际?、解釋?zhí)行、魯棒、 安全、體系結(jié)構(gòu)中立、可移植、高性能、多線程以及動態(tài)性。1.簡單性java語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務(wù),只需理解一些基本的概念,就可以用它編寫出適合于各種情況的應(yīng)用程序。java略去了運(yùn)算符重載、多重繼承等模糊的概念,,且通過實(shí)現(xiàn)自動垃圾收集大大簡化了程序設(shè)計者的內(nèi)存管理工作。另外,java也適合于在小型機(jī)上運(yùn)行,它的基本解釋器及類的支持只有40kb左右,加上標(biāo)準(zhǔn)類庫和線程的支持也只有215kb左右。庫和線程的支持也只有215kb左右。2.面向?qū)ο骿ava語言的設(shè)計集中于對象及其接口,它提供了簡單的類機(jī)制以及動態(tài)的接口模型。對象中封裝了它的狀態(tài)變量以及相應(yīng)的方法,實(shí)現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,并且通過繼承機(jī)制,子類可以使用父類所提供的方法,實(shí)現(xiàn)了代碼的復(fù)用。3.分布性java是面向網(wǎng)絡(luò)的語言。通過它提供的類庫可以處理tcp/ip協(xié)議,用戶可以通過url地址在網(wǎng)絡(luò)上很方便地訪問其它對象。4.魯棒性java在編譯和運(yùn)行程序時,都要對可能出現(xiàn)的問題進(jìn)行檢查,以消除錯誤的產(chǎn)生。它提供自動垃圾收集來進(jìn)行內(nèi)存管理,防止程序員在管理內(nèi)存時容易產(chǎn)生的錯誤。通過集成的面向?qū)ο蟮睦馓幚頇C(jī)制,在編譯時,java提示出可能出現(xiàn)但未被處理的例外,幫助程序員正確地進(jìn)行選擇以防止系統(tǒng)的崩潰。另外, java在編譯時還可捕獲類型聲明中的許多常見錯誤,防止動態(tài)運(yùn)行時不匹配問題的出現(xiàn)。5.安全性用于網(wǎng)絡(luò)、分布環(huán)境下的java必須要防止病毒的入侵。java不支持指針, 一切對內(nèi)存的訪問都必須通過對象的實(shí)例變量來實(shí)現(xiàn),這樣就防止程序員使用 “特洛伊”木馬等欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易 產(chǎn)生的錯誤。6.體系結(jié)構(gòu)中立java解釋器生成與體系結(jié)構(gòu)無關(guān)的字節(jié)碼指令,只要安裝了java運(yùn)行時系統(tǒng),java程序就可在任意的處理器上運(yùn)行。這些字節(jié)碼指令對應(yīng)于java虛擬 機(jī)中的表示,java解釋器得到字節(jié)碼后,對它進(jìn)行轉(zhuǎn)換,使之能夠在不同的平 臺運(yùn)行。7.可移植性與平臺無關(guān)的特性使java程序可以方便地被移植到網(wǎng)絡(luò)上的不同機(jī)器。 同時,java的類庫中也實(shí)現(xiàn)了與不同平臺的接口,使這些類庫可以移植。另外,java編譯器是由java語言實(shí)現(xiàn)的,java運(yùn)行時系統(tǒng)由標(biāo)準(zhǔn)c實(shí)現(xiàn),這使得java 系統(tǒng)本身也具有可移植性。8.解釋執(zhí)行java解釋器直接對java字節(jié)碼進(jìn)行解釋執(zhí)行。字節(jié)碼本身攜帶了許多編譯時信息,使得連接過程更加簡單。9.高性能和其它解釋執(zhí)行的語言如basic不同,java字節(jié)碼的設(shè)計使之能很容易地直接轉(zhuǎn)換成對應(yīng)于特定cpu的機(jī)器碼,從而得到較高的性能。10.多線程多線程機(jī)制使應(yīng)用程序能夠并行執(zhí)行,而且同步機(jī)制保證了對共享數(shù)據(jù)的正確操作。通過使用多線程,程序設(shè)計者可以分別用不同的線程完成特定的行為,而不需要采用全局的事件循環(huán)機(jī)制,這樣就很容易地實(shí)現(xiàn)網(wǎng)絡(luò)上的實(shí)時交互行為。11.動態(tài)性java的設(shè)計使它適合于一個不斷發(fā)展的環(huán)境。在類庫中可以自由地加入 新的方法和實(shí)例變量而不會影響用戶程序的執(zhí)行。并且java通過接口來支持多重繼承,使之比嚴(yán)格的類繼承具有更靈活的方式和擴(kuò)展性。1(二)javaapplet java語言的特性使它可以最大限度地利用網(wǎng)絡(luò)。ap-plet是java的小應(yīng) 用程序,它是動態(tài)、安全、跨平臺的網(wǎng)絡(luò)應(yīng)用程序。javaapplet嵌入html語 言,通過主頁發(fā)布到internet。網(wǎng)絡(luò)用戶訪問服務(wù)器的applet時,這些applet 從網(wǎng)絡(luò)上進(jìn)行傳輸,然后在支持java的瀏覽器中運(yùn)行。由于java語言的安全機(jī) 制,用戶一旦載入applet,就可以放心地來生成多媒體的用戶界面或完成復(fù)雜的 計算而不必?fù)?dān)心病毒的入侵。雖然applet可以和圖像、聲音、動畫等一樣從網(wǎng) 絡(luò)上下載,但它并不同于這些多媒體的文件格式,它可以接收用戶的輸入,動態(tài) 地進(jìn)行改變,而不僅僅是動畫的顯示和聲音的播放。(三)豐富的類庫java提供了大量的類以滿足網(wǎng)絡(luò)化、多線程、面向?qū)ο笙到y(tǒng)的需要。1.語言包提供的支持包括字符串處理、多線程處理、例外處理、數(shù)學(xué)函 數(shù)處理等,可以用它簡單地實(shí)現(xiàn)java程序的運(yùn)行平臺。2.實(shí)用程序包提供的支持包括哈希表、堆棧、可變數(shù)組、時間和日期等。3.輸入輸出包用統(tǒng)一的流模型來實(shí)現(xiàn)所有格式的i/o,包括文件系統(tǒng)、 網(wǎng)絡(luò)、輸入4.低級網(wǎng)絡(luò)包用于實(shí)現(xiàn)socket編程。5.抽象圖形用戶接口包實(shí)現(xiàn)了不同平臺的計算機(jī)的圖形用戶接口部件, 包括窗口、菜單、滾動條、對話框等,使得java可以移植到不同平臺的機(jī)器。6.網(wǎng)絡(luò)包支持internet的tcp/ip協(xié)議,提供了與in-ternet的接口。 它支持url連接,www的即時訪問,并且簡化了用戶/服務(wù)器模型的程序設(shè)計。(四)java和c、c+對于變量聲明、參數(shù)傳遞、操作符、流控制等,java使用了和c、c+ 相同的傳統(tǒng),使得熟悉c、c+的程序員能很方便地進(jìn)行編程。同時,java為 了實(shí)現(xiàn)其簡單、魯棒、安全等特性,也摒棄了c和c+中許多不合理的內(nèi)容。1.全局變量java程序中,不能在所有類之外定義全局變量,只能通過在一個類中定 義公用、靜態(tài)的變量來實(shí)現(xiàn)一個全局變量。例如:classglobalvar public static global_var; 在類globalvar中定義變量global_var為public static,使得其它類 可以訪問和修改該變量。 java對全局變量進(jìn)行了更好的封裝。而在c和c+中,依賴于不加封裝 的全局變量常常造成系統(tǒng)的崩潰。2.gotojava不支持c、c+中的goto語句,而是通過例外處理語句try,catch, final等來代替c、c+中用goto來處理遇到錯誤時跳轉(zhuǎn)的情況,使程序更可讀 且更結(jié)構(gòu)化。 3.指針指針是c、c+中最靈活,也是最容易產(chǎn)生錯誤的數(shù)據(jù)類型。由指針?biāo)M(jìn)行 的內(nèi)存地址操作常會造成不可預(yù)知的錯誤,同時通過指針對某個內(nèi)存地址進(jìn)行顯 式類型轉(zhuǎn)換后,可以訪問一個c+中的私有成員,從而破壞安全性,造成系統(tǒng)的 崩潰。而java對指針進(jìn)行完全的控制,程序員不能直接進(jìn)行任何指針操作,例如 把整數(shù)轉(zhuǎn)化為指針,或者通過指針釋放某一內(nèi)存地址等。同時,數(shù)組作為類在java 中實(shí)現(xiàn),良好地解決了數(shù)組訪問越界這一c、c+中不作檢查的錯誤。4.內(nèi)存管理在c中,程序員通過庫函數(shù)malloc()和free()來分配和釋放內(nèi)存,c+ 中則通過運(yùn)算符new和delete來分配和釋放內(nèi)存。再次釋放已釋放的內(nèi)存塊或 未被分配的內(nèi)存塊,會造成系統(tǒng)的崩潰;同樣,忘記釋放不再使用的內(nèi)存塊也 會逐漸耗盡系統(tǒng)資源。而在java中,所有的數(shù)據(jù)結(jié)構(gòu)都是對象,通過運(yùn)算符new 為它們分配內(nèi)存堆。通過new得到對象的處理權(quán),而實(shí)際分配給對象的內(nèi)存可能 隨程序運(yùn)行而改變,java對此自動地進(jìn)行管理并且進(jìn)行垃圾收集,有效防止了由 于程序員的誤操作而導(dǎo)致的錯誤,并且更好地利用了系統(tǒng)資源。5.數(shù)據(jù)類型的支持在c、c+中,對于不同的平臺,編譯器對于簡單數(shù)據(jù)類型如int,float 等分別分配不同長度的字節(jié)數(shù),例如:int在ibmpc中為16位,在vax-11中為 32位,這導(dǎo)致了代碼的不可移植性,但在java中,對于這些數(shù)據(jù)類型總是分 配固定長度的位數(shù),如對int型,它總占32位,這就保證了java的平臺無關(guān)性。6.類型轉(zhuǎn)換在c、c+中,可以通過指針進(jìn)行任意的類型轉(zhuǎn)換,常常帶來不安全性, 而java中,運(yùn)行時系統(tǒng)對對象的處理要進(jìn)行類型相容性檢查,以防止不安全的 轉(zhuǎn)換。7.頭文件c、c+中用頭文件來聲明類的原型以及全局變量、庫函數(shù)等,在大的系 統(tǒng)中,維護(hù)這些頭文件是很困難的。而java不支持頭文件,類成員的類型和訪 問權(quán)限都封裝在一個類中,運(yùn)行時系統(tǒng)對訪問進(jìn)行控制,防止對私有成員的操作。同時,java中用import語句來與其它類進(jìn)行通訊,以便使用它們的方法。8.結(jié)構(gòu)和聯(lián)合c、c+中的結(jié)構(gòu)和聯(lián)合中所有成員均為公有,這就帶來了安全性問題。 java中不包含結(jié)構(gòu)和聯(lián)合,所有的內(nèi)容都封裝在類中。9.預(yù)處理c、c+中用宏定義來實(shí)現(xiàn)的代碼給程序的可讀性帶來了困難。在java中不支持宏,它通過關(guān)鍵字final來聲明一個常量,以實(shí)現(xiàn)宏定義中廣泛使 用的常量定義32.3 java語言在網(wǎng)絡(luò)上的應(yīng)用java程序可以獲取網(wǎng)絡(luò)上結(jié)點(diǎn)的圖象、聲音、html文檔及文本等資源,并可以對獲得的資源進(jìn)行處理。例如java程序可以每隔一定時間讀取某結(jié)點(diǎn)提供的最新數(shù)據(jù),并以圖表的形式顯示出來。在編程處理上,一般先生成一個url類型的對象,然后用 java中相應(yīng)的方法(method)獲取該對象所代表的資源。如何開發(fā)一個server-client模型的程序 第一步客戶端與服務(wù)器端的連接 服務(wù)器端通過指定端口接收用戶請求,收到連接請求后,與客戶端進(jìn)行連接,根據(jù)客戶端的請求類型做出響應(yīng)??蛻舳藙t發(fā)送連接請求或信息請求與服務(wù)器端進(jìn)行通訊。開發(fā)原理: 服務(wù)器,使用serversocket監(jiān)聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請求,客戶連接后,會話產(chǎn)生;在完成會話后,關(guān)閉連接。 客戶端,使用socket對網(wǎng)絡(luò)上某一個服務(wù)器的某一個端口發(fā)出連接請求,一旦連接成功,打開會話;會話完成后,關(guān)閉socket。客戶端不需要指定打開的端口,通常臨時的、動態(tài)的分配一個1024以上的端口。 第二步多個客戶同時連接 在實(shí)際的網(wǎng)絡(luò)環(huán)境里,同一時間只對一個用戶服務(wù)是不可行的。一個優(yōu)秀的網(wǎng)絡(luò)服務(wù)程序除了能處理用戶的輸入信息,還必須能夠同時響應(yīng)多個客戶端的連接請求。在java中,實(shí)現(xiàn)以上功能特點(diǎn)是非常容易的。 設(shè)計原理: 主程序監(jiān)聽一端口,等待客戶接入;同時構(gòu)造一個線程類,準(zhǔn)備接管會話。當(dāng)一個socket會話產(chǎn)生后,將這個會話交給線程處理,然后主程序繼續(xù)監(jiān)聽。運(yùn)用thread類或runnable接口來實(shí)現(xiàn)是不錯的辦法。 第三步 實(shí)現(xiàn)信息共享:在socket上的實(shí)時交流 網(wǎng)絡(luò)的偉大之一也是信息共享,server可以主動向所有client廣播消息,同時client也可以向其它c(diǎn)lient發(fā)布消息。下面看看如何開發(fā)一個可以實(shí)時傳遞消息的程序。 設(shè)計原理: 服務(wù)器端接受客戶端的連接請求,同時啟動一個線程處理這個連接,線程不停的讀取客戶端輸入,然后把輸入加入隊(duì)列中,等候處理。在線程啟動的同時將線程加入隊(duì)列中,以便在需要的時候定位和取出。2第三章總體設(shè)計本章主要介紹了該系統(tǒng)在需求分析以及總體設(shè)計思路、功能模塊、軟件的工作原理等。需求分析在大多數(shù)軟件系統(tǒng)的敘述要都會獨(dú)立出一章來敘述,但出于該系統(tǒng)的直觀性和廣泛性,就把它拿到這里來敘述,增強(qiáng)可讀性。3.1 需求分析聊天系統(tǒng)主要包含服務(wù)器端和客戶端兩個方面。而這兩個方面所要完成的任務(wù)不同。服務(wù)器端的任務(wù)主要為:.服務(wù)器端應(yīng)當(dāng)建立一個serversocket,并且不斷進(jìn)行偵聽是否有客戶端連接或者斷開連接(包括判斷沒有響應(yīng)的連接超時)。服務(wù)器端應(yīng)當(dāng)是一個信息發(fā)送中心,所有客戶端的信息都傳到服務(wù)器端,由服務(wù)器端根據(jù)要求分發(fā)信息。.服務(wù)器端應(yīng)當(dāng)將處理過程中需要持久化的數(shù)據(jù)保存到數(shù)據(jù)庫中,以及實(shí)時的從數(shù)據(jù)庫中提取所需數(shù)據(jù)。而客戶端應(yīng)該完成的工作主要包括:與服務(wù)器端建立通信通道,向服務(wù)器端發(fā)送信息。接收來自服務(wù)器的信息。相對服務(wù)器而言,客戶端的任務(wù)更加簡單,有了以上的簡單分析,不難看出,解決上述四個問題,即完成了該聊天系統(tǒng)的核心。3.2 設(shè)計要點(diǎn)聊天系統(tǒng)的設(shè)計跟普通網(wǎng)站設(shè)計有著許多不同的地方,普通網(wǎng)站設(shè)計所考慮的因素,例如,普通網(wǎng)站需要對布局進(jìn)入大量美化以及動畫設(shè)計等等,而聊天室只要提供滿足訪客雙方直接實(shí)時聊天即可。因此,在設(shè)計聊天系統(tǒng)的過程中,必須要考慮好以下幾個設(shè)計要點(diǎn):1、實(shí)現(xiàn)思想在internet上的聊天程序一般都是以服務(wù)器提供服務(wù)端連接響應(yīng),使用者通過客戶端程序登錄到服務(wù)器,就可以與登錄在同一服務(wù)器上的用戶交談,這是一個面向連接的通信過程。因此,程序要在tcp/ip環(huán)境下,實(shí)現(xiàn)服務(wù)器端和客戶端兩部分程序。2、服務(wù)器端工作流程服務(wù)器端通過socket()系統(tǒng)調(diào)用創(chuàng)建一個socket數(shù)組后(即設(shè)定了接受連接客戶的最大數(shù)目),與指定的本地端口綁定bind(),就可以在端口進(jìn)行偵聽listen()。如果有客戶端連接請求,則在數(shù)組中選擇一個空socket,將客戶端地址賦給這個socket。然后登錄成功的客戶就可以在服務(wù)器上聊天了。3、客戶端工作流程客戶端程序相對簡單,只需要建立一個socket與服務(wù)器端連接,成功后通過這個socket來發(fā)送和接收數(shù)據(jù)就可以了。3.3 功能模塊及設(shè)計步驟3.1.1 功能模塊該系統(tǒng)主要包括以下功能,如圖圖3.1所示:圖3.1功能模塊圖當(dāng)用戶第一次使用本軟件時需要新注冊用戶。之后用戶需登錄并驗(yàn)證通以后方可以進(jìn)入聊天界面,用戶登錄后可以與在線的用戶進(jìn)行聊天。剛進(jìn)入的聊天界面默認(rèn)的是與多個或單個用戶聊天,查看在線用戶信息,選擇某個用戶進(jìn)行私聊或者屏蔽某個用戶的發(fā)言在自己界面的顯示。此外,本系統(tǒng)還充許用戶修改其本人的用戶信息,諸如:用戶名,頭像,個性簽名等,當(dāng)然也有用戶密碼修改功能。3.1.2 設(shè)計步驟、數(shù)據(jù)庫設(shè)計表1-1 user_qq表idnamesexiconmemopwd1sophief01一路風(fēng)塵19850321williamm31開心就好19860101由于在整個聊天系統(tǒng)中,都是圍繞用戶來操作,所以這個網(wǎng)絡(luò)聊天程序只設(shè)計了一個表。鑒于時間及能力有限,該系統(tǒng)只實(shí)現(xiàn)了比較簡單的一些功能,因而本系統(tǒng)只設(shè)計了幾個關(guān)鍵的字段為程序所使用,如上表1-1所示。、界面開發(fā)當(dāng)前騰訊qq的流行讓我在界面開發(fā)方面的主界面以效仿其群聊界面為主,而私聊可以通過右鍵點(diǎn)擊用戶打開。但界面不會有太復(fù)雜。、業(yè)務(wù)邏輯該系統(tǒng)中我采用c/s模式,c/s模式的優(yōu)點(diǎn)是能充分發(fā)揮客戶端pc的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快。、服務(wù)器端使用采用多線程接收用記發(fā)來的請求,每接到一個新用戶的登錄或注冊請求,服務(wù)器端開一個新的線程來處理這個請求并生成響應(yīng)返回給一定的用戶,并根據(jù)需要來訪問數(shù)據(jù)庫。、客戶端負(fù)責(zé)發(fā)出請求,并實(shí)時接收服務(wù)器端發(fā)出的響應(yīng)。是用戶直接操作的程序。第四章詳細(xì)設(shè)計與實(shí)現(xiàn)本章先說明了該系統(tǒng)的運(yùn)行和開發(fā)環(huán)境,以及核心功能的具體實(shí)現(xiàn)過程和所用的主要技術(shù)。最后描述了該系統(tǒng)的測試流程和運(yùn)行結(jié)果。4.1 開發(fā)環(huán)境基于java聊天系統(tǒng)的設(shè)計主要運(yùn)用java與語言與socket類結(jié)合而開發(fā)。其開發(fā)的主要環(huán)境包括:服務(wù)器端:(windows平臺)首先應(yīng)有java環(huán)境jdk,建議采用jdk1.5以上,另外還需配置classpath環(huán)境變量,添加數(shù)據(jù)庫mysql及數(shù)據(jù)操作技術(shù)組件hibernate運(yùn)行所需要的jar包,本系統(tǒng)開發(fā)工具為myeclipse6.0.1;客戶端:只要有java環(huán)境jdk就可以,建議jdk1.5。本系統(tǒng)運(yùn)行環(huán)境所需的硬件環(huán)境為: 中央處理器(cpu) :intel(r) pentium(r) processor 1.60ghz硬 盤:40gb以上硬盤;內(nèi) 存:512 ddr內(nèi)存;顯示器:17寸顯示器等;顯 卡:128m顯存顯卡軟件環(huán)境:windows xp、myeclipse_6.0、jdk-6u14-windows-i586、mysql 5.0.18、hibernate 3.1等。4.2 核心功能實(shí)現(xiàn)4.2.1 socket的簡介socket,簡稱套接字,用于實(shí)現(xiàn)網(wǎng)絡(luò)上客戶和服務(wù)器之間的連接。也就是說網(wǎng)絡(luò)上兩個或兩個以上雙工方式通信的進(jìn)程之間總有一個連接,這個連接的端點(diǎn)成為套接字,套接字是在比較低的層次上通信的。具體的說:一個服務(wù)器應(yīng)用程序一般偵聽一個特定的端口等待客戶端的連接請求,當(dāng)一個連接請求到達(dá)時,客戶端和服武器端建立一個通信連接,在連接過程中,客戶端被分配一個本地端口與一個socket建立連接,客戶端通過寫socket來通知服務(wù)器,以讀socket中的信息,類似的服務(wù)器也獲得一個本地端口,它需要一個新的端口號來偵聽原始端口上的其他連接請求。服務(wù)器也通過它的本地端口連接一個socket,通過讀寫和客戶端通信。41.三次握手的:第一次握手:原主機(jī)發(fā)送一個帶有本次連接的序號的請求的一個數(shù)據(jù)幀第二次握手:目的主機(jī)收到請求后,如果同意連接,則發(fā)回一個帶有一個本次連接序號和源端機(jī)連接序列號的確認(rèn)。第三此握手:源端機(jī)收到含有兩次初始序列號的應(yīng)答后,在向目的主機(jī)發(fā)送一個帶有兩次連接的序列號的確認(rèn)。具體過程如下圖4.1所示:ack=1第一次握手,主機(jī)a向主機(jī)b發(fā)送連接請求第二次握手,主機(jī)b收到主機(jī)a的請求,向主機(jī)a回發(fā)一個確認(rèn),同時向主機(jī)a發(fā)送一個連接請求第三次握手,主機(jī)a收到主機(jī)b發(fā)送的數(shù)據(jù)包在向主機(jī)b發(fā)送一個確認(rèn)連接syn=1,seq主機(jī)a 主機(jī)b: ack=1,syn=1,seq=aaaaaaaaaa圖4.1 socket連接圖2.socket工作原理(1)聊天系統(tǒng)工作原理圖聊天系統(tǒng)的工作原理是,一個服務(wù)器通過tcp連接多個客戶端,如圖4.2所示:圖4.2數(shù)據(jù)傳輸原理圖(2)tcp/ip協(xié)議進(jìn)行傳輸數(shù)據(jù)傳輸?shù)倪^程:應(yīng)用程序?yàn)榱藗鬏敂?shù)據(jù)會調(diào)用tcp,將數(shù)據(jù)和對應(yīng)的參數(shù)傳給tcp,將tcp 數(shù)據(jù)包封裝在ip包內(nèi),通過網(wǎng)絡(luò)送給目的tcp。接收方tcp在接收到數(shù)據(jù)后通知上層應(yīng)用程序,tcp將保證接收數(shù)據(jù)的正確性。在實(shí)現(xiàn)tcp的主機(jī)上,tcp可以被看成是一個模塊,和文件系統(tǒng)區(qū)別不大,tcp 也可以調(diào)用一些操作系統(tǒng)的功能,tcp不直接和網(wǎng)絡(luò)打交道,控制網(wǎng)絡(luò)的任務(wù)由專門的設(shè)備驅(qū)動模塊完成。tcp只是調(diào)用ip接口,向tcp提供所有tcp需要的服務(wù)。(3)端口號:有的時候,一個ip地址不能完整的標(biāo)識一臺服務(wù)器,這是應(yīng)為一臺物理性的計算機(jī)同時運(yùn)行著多個應(yīng)用程序,這就需要我們來區(qū)別同一臺機(jī)子上的不同的服務(wù),所以就在傳輸層和應(yīng)用層上設(shè)置接口,就是 端口。端口實(shí)際是一個16位長的 地址,他的范圍是065535之間,其中01023是熟知端口,主要是給提供服務(wù)的應(yīng)用程序使用,這些端口是所有應(yīng)用進(jìn)程都只道的,102465535為一般端口,也稱動態(tài)端口、連接端口,用來隨時分配要求通信的個客戶端應(yīng)用程序。在數(shù)據(jù)傳輸過程中,各種服務(wù)器不斷的檢測分配給他的端口,一邊發(fā)現(xiàn)要求和他通信的客戶端。4.2.2 服務(wù)器與客戶端之間的通信1、建立socket連接:在通信開始之前由通信雙方確認(rèn)身份,建立一條專用的虛擬連接通道。2、數(shù)據(jù)通信:利用虛擬連接通道傳送數(shù)據(jù)信息進(jìn)行通道。3、關(guān)閉:通信結(jié)束時,再將所建的虛擬連接拆除。通信過程我們可以用下圖4.來概括,而具體的細(xì)節(jié)我們用下一節(jié)的流程圖來說明。服務(wù)器客戶端1服務(wù)器socket2監(jiān)聽4接收5讀6寫7關(guān)閉3客戶端socket6寫5讀7關(guān)閉發(fā)送連接請求 連接失敗發(fā)送數(shù)據(jù)接收數(shù)據(jù)圖4.3服務(wù)器與客戶端之間的通信過程4.2.3 流程圖本次畢設(shè)的核心功能是服務(wù)器端與客戶端之間的通信。而服務(wù)器端與客戶端的實(shí)現(xiàn)是不同的。我們分別用流程圖來說明。服務(wù)器端:服務(wù)器端開始會有一段程序來隨時監(jiān)聽用戶的請求,如圖4.4所示:圖4.4服務(wù)器主程序說明:1.服務(wù)器剛開啟后,會初始化某些必要的設(shè)置,諸如數(shù)據(jù)連接對象和socket連接端口號等。這兩個配置都不會硬編碼到程序中去,而是寫到相應(yīng)的配置文件中,使得以后更換不同數(shù)據(jù)庫時方便修改。2.初始化成功后,程序會用上一步生成的serversocket對象的accept()方法生成一個socket對象對客戶端進(jìn)行監(jiān)聽。這段代碼會放到一個循環(huán)里,保證每個同戶都能得到響應(yīng)。3.服務(wù)器每接到一個請求連接會創(chuàng)建一個新的線程來服務(wù)該用戶。多線程的引入為多個用戶同時訪問該服務(wù)器提供了技術(shù)上的支持。新的線程也是由一個循環(huán)來監(jiān)聽消息請求,如圖4.5所示:圖4.5服務(wù)線程說明:1.新的線程運(yùn)行后,進(jìn)入一個循環(huán)程序,并被由socket對象創(chuàng)建的輸入流阻塞,直到用戶發(fā)來消息請求。服務(wù)器會通過不同的消息請求交給不同的方法做出處理,并給對用戶做出響應(yīng)。2.線程的銷毀同樣需要用戶發(fā)來退出請求,釋放資源,并通知其它用戶。但是實(shí)際情況中經(jīng)常會出現(xiàn)客戶端異常斷線的情況。這樣服務(wù)器端就不會正常釋放資源,這樣服務(wù)器端運(yùn)行一段時間后就會資源不足。有兩種辦法可以解決這個問題:一是讓服務(wù)器定時發(fā)送消息確認(rèn)用戶在線,另一個方法是服務(wù)器超時斷線??蛻舳耍嚎蛻舳艘残枰獎?chuàng)建一個線程來接收,流程圖如圖4.6所示:圖4.6客戶端主程序說明:1.與服務(wù)器不同,客戶端的初始化需要有服務(wù)器的ip和對應(yīng)程序的端口號。同樣也不能硬碼到程序中,需要放到配置文件中。2.為了能夠同時收發(fā)數(shù)據(jù),客戶端也需要重新創(chuàng)建一個線程。該線程的關(guān)閉需要主線程來調(diào)用子線程關(guān)閉程序來關(guān)閉。新創(chuàng)建的線程響應(yīng)程序與服務(wù)器端的服務(wù)程序類似,不同的是客戶端與服務(wù)器連接后要接收服務(wù)器端發(fā)來的所有在線用戶列表,初始化其好友。如圖4.7所示:圖4.7客戶端接收響應(yīng)線程說明:該線程的需要注意的地方是,線程的銷毀是由創(chuàng)建該線程的父線程發(fā)出命令來銷毀的。4.3 功能模塊的測試本次畢設(shè)的編譯環(huán)境,及編寫平臺為java。主要用到的類為包中的socket類和javax.swing包中的類。服務(wù)器線程在程序運(yùn)行期間一直有效,接受客戶端請求信息,轉(zhuǎn)發(fā)客戶端聊天內(nèi)容,查看用戶信息。客戶端運(yùn)行時先進(jìn)入登錄界面如圖4.8所示,在登錄界面我們可以直接登錄以前注冊好的帳號,也可以點(diǎn)擊“注冊”按鈕進(jìn)入注冊界面來注冊新的用戶。圖4.8 登錄界面說明:該界面是客戶端運(yùn)行的第一個界面,用戶可以直接登錄,將信息發(fā)送到服務(wù)器端驗(yàn)證,若輸入不合法、數(shù)據(jù)庫中沒有該用戶或密碼錯誤等,會彈出一個提示窗口進(jìn)行提示。注冊界面如圖4.9所示圖4.9 注冊界面說明:注冊界面中用戶需要輸入基本信息,但性別在該系統(tǒng)中不是關(guān)鍵信息,可不予填寫。當(dāng)用戶登錄后我們就進(jìn)入了聊天聊天程序的主界面,如圖4.10所示,此時我們就可以和所有在線用戶群聊天,也可以右擊某個用戶選擇和其私聊圖4.10 聊天界面說明:1.這是該系統(tǒng)的主界面,登錄到這個界面后,用戶即可與其它用戶進(jìn)行聊天,同時其它用戶也會接到該用戶上線的通知。同樣,某個用戶下線的時候,服務(wù)器也會將信息發(fā)給其它用戶,做到了人性化的一面。2.該界面右面的樹形用戶列表,我們可以右擊用戶名查看用戶信息,也可以屏蔽該用戶的發(fā)言在本地的顯示。3.該部分還加入了其它組件,如字體設(shè)置、表情等,但由于種種原因,目前程序上還沒實(shí)現(xiàn)其功能。在主界面中我們還可以點(diǎn)擊用戶名來修改自己的信息和密碼如圖4.11所示圖4.11 個人信息修改界面說明:通過該界面用戶可以查看或修改自己的信息??偨Y(jié)本畢業(yè)設(shè)計實(shí)現(xiàn)了簡單的實(shí)時聊天功能,經(jīng)過細(xì)心的調(diào)試和排錯解決了絕大部分的問題。但幾乎每一個計算機(jī)程序都會有這樣那樣的不足,尤其是未經(jīng)過精心維護(hù)的非商業(yè)軟件。即使是作為操作系統(tǒng)的各種版本的windows也時常會發(fā)生許多類型的錯誤和漏洞。本聊天系統(tǒng)程序?qū)τ诔跎娲祟I(lǐng)域的畢業(yè)設(shè)計課題來說,尤其在開始初期,感覺邏輯復(fù)雜,難以控制,因此至今還有許多未能解決的缺陷。目前本聊天系統(tǒng)還有待完善的功能列表如下:1.聊天系統(tǒng)缺乏在線訪客列表;2.聊天系統(tǒng)缺乏各種表情選擇、屏蔽發(fā)言、播放音樂、踢人、悄悄話聊天室等功能;3.功能仍過于簡單,沒有考慮會員功能,也缺少自建聊天室功能;4.也沒有詳細(xì)考慮聊天室管理功能;5.文件傳輸功能還尚未實(shí)現(xiàn)。盡管畢業(yè)設(shè)計到現(xiàn)在已接近尾聲,但是對于上述的缺陷,本人還會不斷對聊天系統(tǒng)進(jìn)一步的完善它,期望在今后的日子里憑借自身的技術(shù)把系統(tǒng)做成一套深受歡迎的聊天系統(tǒng)。致謝緊張而忙碌的畢業(yè)設(shè)計就要結(jié)束了,在完成了系統(tǒng)的功能設(shè)計后,我感到由衷的喜悅和自豪。在我做畢業(yè)設(shè)計期間,許多老師,同學(xué)和朋友給我我無私的關(guān)懷和幫助,在此,我要向他們表示衷心的感謝。首先,我要感謝學(xué)校的老師在畢業(yè)設(shè)計期間給了我悉心的關(guān)懷與幫助,并且給了我許多關(guān)鍵的,建設(shè)性的指導(dǎo)。這次的畢業(yè)設(shè)計讓我受益匪淺??梢赃@樣說,用計算機(jī)來解決繁重而低效的手工管理工作,計算機(jī)發(fā)展史上的必然。在理論課的學(xué)習(xí)中,我掌握了基礎(chǔ)課和專業(yè)課的理論知識,也曾經(jīng)做過一些程序設(shè)計的聯(lián)系和計算機(jī)綜合試驗(yàn),但真正動手設(shè)計一個管理軟件,還是第一次。在這次的畢業(yè)設(shè)計中,我曾遇到了許多困難,而在克服這些困難的過程中,我的各方面的能力又有了很大的提高,使我的理論知識更好的與實(shí)踐相結(jié)合,增強(qiáng)了專業(yè)技能的可實(shí)踐性。從調(diào)研,需求分析到查找資料,結(jié)構(gòu)設(shè)計,詳細(xì)設(shè)計以及調(diào)試程序,到最后的寫使用說明書,我終于設(shè)計出了一個比較完整的,周密的,可使用的聊天系統(tǒng)。通過這次的畢業(yè)設(shè)計,我真正了解了軟件工程設(shè)計的整個過程,既鞏固了以前的理論知識,也為我以后的工作奠定了良好的基礎(chǔ)。當(dāng)然,由于時間的短促,我所完成的系統(tǒng)并不是盡善盡美的,還有待進(jìn)一步的修改和完善。最后,請?jiān)试S我再一次向畢業(yè)期間無私幫助過我的老師,同學(xué)和朋友表示最衷心的感謝。參考文獻(xiàn)1 bruce eckel.java2 編程思想m.機(jī)械工業(yè)出版社,2002 年9月2 w.richard stevens.java網(wǎng)絡(luò)編程m.東南大學(xué)出版社,2001年3月3 印雯. java語言與面向?qū)ο蟪绦蛟O(shè)計m.清華大學(xué)出版, 2000年09月4 卡爾弗特,多納霍.java tcp/ip socket編程m. 機(jī)械工業(yè)出版社,2009年5 霍頓.java2入門經(jīng)典(jdk5)m. 機(jī)械工業(yè)出版社,2006年4月6 swing ,david m.geary.java圖形設(shè)計m. 機(jī)械工業(yè)出版社, 2000 年2月7 bil lewis daniel j.berg.深入學(xué)習(xí):java多線程編程m. 電子工業(yè)出版社,2000年12月8 夏昕 曹曉鋼 唐勇.深入淺出hibernatem. 電子工業(yè)出版社,2005年9 劉長炯.myeclipse6java開發(fā)中文教程m.電子工業(yè)出版社,2007年12月10 tunatugcu ero gelenbe m.ufuk caglayan fatih alagozm .new trends in computer networks. 2005年10月01日11 leen ammeraal.computer graphics for java programmersm. wiley, 2006 年12月12 martinfowler.refactoring: improving the design of existing codem. 中國電力出版社, 2003 年8月13 閻宏.java與模式m.電子工業(yè)出版社, 2002年10月1日附錄服務(wù)器端部分核心代碼:package com.cyb.qq.service.main;import .*;import java.io.*;import java.util.*;import com.cyb.qq.service.dao.userdao;import com.cyb.qq.service.dao.userdaoimhbn;import com.cyb.qq.service.entity.*;public class servermainclass public static userdao userdao;public static map usermap;public static properties pro;/ 初始化配置參數(shù)/* * 靜態(tài)初始化方法。 * */public static void init() pro = new properties();try pro.load(new fileinputstream(server_config.txt); catch (ioexception e) system.out.println(找不到配置文件或配置文件格式不正確!);e.printstacktrace();userdao = new userdaoimhbn();usermap = new hashmap();public static void main(string args) init();serversocket ss =

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論