




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
畢業(yè)論文(設(shè)計題目基于JAVA的網(wǎng)絡(luò)即時通訊軟件的設(shè)計和實現(xiàn)學(xué)生姓名學(xué)號院系計算機與軟件學(xué)院專業(yè)軟件工程指導(dǎo)教師二O一二年五月二十五日聲明本人鄭重聲明:1、持以“求實、創(chuàng)新”的科學(xué)精神從事研究工作。2、本論文是我個人在導(dǎo)師指導(dǎo)下進行的研究工作和取得的研究成果。3、本論文中除引文外,所有實驗、數(shù)據(jù)和有關(guān)材料均是真實的。4、本論文中除引文和致謝的內(nèi)容外,沒有抄襲其他人或其他機構(gòu)已經(jīng)發(fā)表或撰寫過的研究成果。5、其他同志對本研究所做的貢獻均已在論文中作了聲明并表示了謝意。作者簽名:日期:目錄1緒論(11.1即時通訊系統(tǒng)產(chǎn)生的背景(11.2即時通訊系統(tǒng)的現(xiàn)狀和發(fā)展(11.3開發(fā)即時通訊系統(tǒng)的意義(22相關(guān)技術(shù)(22.1JAVA語言(22.2TCP/IP協(xié)議(32.3Socket通信(33系統(tǒng)需求分析(43.1項目設(shè)計的需求描述(43.2項目設(shè)計的系統(tǒng)用例圖(53.3user注冊活動圖(63.4user登錄活動圖(63.5user好友添加時序圖(73.6user聊天時序圖(73.7user語音聊天時序圖(84系統(tǒng)數(shù)據(jù)庫設(shè)計(94.1用戶和客戶端的關(guān)系(94.2用戶和登錄記錄的關(guān)系(94.3用戶和聊天記錄的關(guān)系(104.4數(shù)據(jù)庫中表格的設(shè)計(105詳細設(shè)計(125.1系統(tǒng)總體流程圖(125.2系統(tǒng)客戶端流程圖(126系統(tǒng)實現(xiàn)(136.1編寫服務(wù)器端程序(136.2客戶端程序編寫(216.3聊天室實現(xiàn)(237結(jié)語(31基于JAVA的網(wǎng)絡(luò)即時通訊軟件的設(shè)計和實現(xiàn)郝金南京信息工程大學(xué)計算機與軟件學(xué)院,南京210044摘要:本論文用Java語言編寫的一個聊天系統(tǒng)。該系統(tǒng)是基于Java平臺,系統(tǒng)采用面向?qū)ο蠹夹g(shù)和面向?qū)ο蟮脑O(shè)計原則。系統(tǒng)采用C/S結(jié)構(gòu),客戶端和客戶端、客戶端和服務(wù)器端通過Socket發(fā)送消息。使用Java語言編寫,使用Eclipse開發(fā)工具。服務(wù)器端的設(shè)計和實施過程中,使用多線程技術(shù),它可以在一個程序中同時運行多個不同的線程,執(zhí)行不同的任務(wù),大大提高服務(wù)器資源的利用率。數(shù)據(jù)庫管理系統(tǒng)用SQLServer2005完成并通過JDBC-ODBC橋訪問數(shù)據(jù)庫。聊天系統(tǒng)將完成多人互相聊天、添加、刪除好友、新用戶注冊、收發(fā)郵件、文件傳輸和語音視頻聊天。關(guān)鍵詞:網(wǎng)絡(luò),即時通信,C/S,SQL2005;1緒論1.1即時通訊系統(tǒng)產(chǎn)生的背景電子信息技術(shù)飛速發(fā)展,它融合了計算機、通信、信息和信號處理技術(shù),使得信息飛速發(fā)展已成為一種必然趨勢。各種信息化系統(tǒng)已成為一個國家基礎(chǔ)設(shè)施,電子商務(wù)、電子政務(wù)、電子金地、科學(xué)研究、通信、交通和網(wǎng)絡(luò)教育等十分重要的領(lǐng)域都因此而有了非常大的發(fā)展。因此,推進各領(lǐng)域高速發(fā)展的必要前提是信息化建設(shè)的發(fā)展。為實現(xiàn)其投資效益的最大化,必須加快信息化建設(shè)的發(fā)展步伐,信息化工程的實施必須立竿見影。所以為了將實施信息化工程的風(fēng)險降至最低,我們需要一套或者多套穩(wěn)定應(yīng)用、功能貼切、易學(xué)易用、快速實施的信息化解決方案,能確保其關(guān)鍵業(yè)務(wù)和關(guān)鍵管理需求的優(yōu)先解決,并能提供足夠的擴展性來適應(yīng)其不斷增長的需要。但是傳統(tǒng)業(yè)務(wù)的各個系統(tǒng)是獨立設(shè)計的,支撐系統(tǒng)也是以滿足生產(chǎn)為目的,而如果還是完全按照傳統(tǒng)的思路進行各個系統(tǒng)的信息化建設(shè),那么即使系統(tǒng)建成,也會有較大發(fā)展,但這種發(fā)展也只是各自單獨的發(fā)展,并沒有實信息化時代信息的快速傳遞和交換形成的互促發(fā)展的特點。這顯然不符合我們希望信息資源的集成共享從而加快高度的自動化、智能化的信息化建設(shè)的初衷。所以,我們就需要變化視角,通過新的角度設(shè)計出新的技術(shù)發(fā)展方案.,重新構(gòu)建信息化建設(shè)和相關(guān)產(chǎn)業(yè)模式,才能達到實現(xiàn)便捷、多贏的目的。即時通訊系統(tǒng)應(yīng)運而生。1.2即時通訊系統(tǒng)的現(xiàn)狀和發(fā)展即時通訊系統(tǒng)是基于Internet網(wǎng)絡(luò)及其它有線、無線網(wǎng)絡(luò)的一種非常流行的實時通信方式,是一種非常便捷的網(wǎng)絡(luò)通訊技術(shù),它用互聯(lián)網(wǎng)通過通信系統(tǒng)建立起網(wǎng)絡(luò)虛擬環(huán)境,通過計算機鍵盤或無線設(shè)備在網(wǎng)絡(luò)上進行實時交換,成為一種提供公共通訊、商務(wù)通訊及商務(wù)合作的新媒介,也彌補了傳統(tǒng)通訊形式的不足,尤其是電子郵件及語音通信方面。隨著即時通信普及,全球即時通信用戶的數(shù)量也不斷增長。微軟公司的MSN、0ICQ和雅虎公司的雅虎通,騰迅公司QQ,網(wǎng)易公司的網(wǎng)易泡泡等通信系統(tǒng)都是家喻戶曉的。除了最基本的單純的文本交流,即時通信業(yè)務(wù)增加了視頻、音頻交流等多種寬帶應(yīng)用元素,如提供視頻、語音通信服務(wù)、交流共享、短信收發(fā)、數(shù)據(jù)傳輸?shù)确?wù)項目。即時通信軟件的第二次發(fā)展浪潮來臨----基于PgP技術(shù)的多媒體和基于IP技術(shù)的通信方。即時通信業(yè)務(wù)的承載設(shè)備也將趨向于多元化。用戶可以通過手機、個人計算機、PDA等工具使用即時通信,寬帶電話、網(wǎng)絡(luò)電話業(yè)務(wù)也逐漸在即時通信的軟件上實現(xiàn)功能。1.3開發(fā)即時通訊系統(tǒng)的意義即時通信系統(tǒng)的3大優(yōu)勢:1.功能的多樣性。如提供視頻、交流共享、語音通信服務(wù)、短信收發(fā)、數(shù)據(jù)傳輸?shù)确?wù)項目,同時也注重了安全性、健壯性。2.通信的即時性和高效性。即時通信系統(tǒng)的速度快,不管接收方的計算機處理什么樣的業(yè)務(wù),發(fā)送的消息都能很快的通知眾多的用戶,使通信更加即時有效。3.功能上較強的延伸性。例如,有些即時通信軟件可以用無線接入設(shè)備實現(xiàn)無線即時通信、直接訪問公司的數(shù)據(jù)庫、召集網(wǎng)上會議、多種語言的互譯等等。即時通信軟件是應(yīng)用軟件的一個重要的分支,構(gòu)造的成本低、實時性好、網(wǎng)上交流平臺便捷的特點決定了它的普及性,使其成為了在互聯(lián)網(wǎng)上和他人聯(lián)系的重要方式,可以加強信息溝通,推動政府機構(gòu)、大型事業(yè)單位信息化的建設(shè)!因此,開發(fā)及時通訊軟件也就具有了重要的意義!2相關(guān)技術(shù)2.1JAVA語言Java是一種簡單、多線程、安全、容易適用、可移置、面向?qū)ο蟆⒏咝阅艿恼Z言。它具有如下特點:1.面向?qū)ο蟆C嫦驅(qū)ο蠹夹g(shù)一次革新,它可以提高模塊化程度和重復(fù)適用率,縮短軟件開發(fā)時間,減低開發(fā)成本。2.安全性。Java提供了許多安全機制,是能用在網(wǎng)路和分布環(huán)境下的程序設(shè)計語言。3.多線程。Java具備內(nèi)建的多線程功能,使各線程并發(fā)、獨立執(zhí)行,提高系統(tǒng)的運行效率。4.平臺獨立。平臺獨立是指程序不受操作平臺限制,可以應(yīng)用于各種平臺。Java源程序經(jīng)過編譯后能夠生成字節(jié)碼文件,字節(jié)碼和具體的計算機無關(guān)。計算機安裝能解釋執(zhí)行字節(jié)碼的JVM,就能執(zhí)行字節(jié)碼文件,實現(xiàn)了Java的平臺獨立性。5.執(zhí)行效率。字節(jié)碼要經(jīng)過JVM解釋成機器碼才能執(zhí)行,所以速度較慢。2.2TCP/IP協(xié)議TCP協(xié)議是網(wǎng)絡(luò)通信的基石。Java專門提供了Socket的類庫,抽象出TCP協(xié)議通信中的常用方法:TCP協(xié)議與三次握手:(1客戶端,首先發(fā)送TCP請求,客戶端是服務(wù)(如數(shù)據(jù)查詢服務(wù)的請求者。(2服務(wù)器,接收到客戶端的請求后,服務(wù)器向客戶端提供服務(wù)。服務(wù)器是服務(wù)的執(zhí)行者,返回服務(wù)執(zhí)行的結(jié)果給向客戶端。首先客戶端發(fā)送一個數(shù)據(jù)包SYN。如果服務(wù)器收到SYN,它會發(fā)回一個數(shù)據(jù)包SYN+ACK??蛻舳藶榱吮硎臼盏絊YN+ACK信息,向服務(wù)器發(fā)送一個最終確認信息ACK。SYN,SYN+ACK,ACK步驟被稱為“三次握手”,這樣,連接就建立好了,并將一直保持活動狀態(tài),直到其中一方發(fā)出FIN(結(jié)束信號或者超時。這種通信模式也被叫做客戶端/服務(wù)器(C/S模式。如圖5-1所示:圖2-1握手協(xié)議2.3Socket通信從概念上理解,Socket是網(wǎng)絡(luò)編程中最常見的客戶/服務(wù)器模式,也是本系統(tǒng)的基礎(chǔ)。以該模式編程時,服務(wù)器端有一個進程或多個進程在指定的端口等待客戶來連接,一旦連接成功,便按設(shè)計的數(shù)據(jù)交換方法和格式進行數(shù)據(jù)傳輸??蛻舳讼蚍?wù)器端提出連接請求,連接之后進行通信。Socket是一種用于表達兩臺機器上都有一個Socket,可以想象一條虛擬的電纜工作在兩臺機器之間,電纜插在兩臺機器的Socket上。簡單的說,一臺計算機上的Socket同另一臺計算機通話創(chuàng)建一個通信信道,我們可以用這個信道在兩臺機器之間發(fā)送數(shù)據(jù)。如圖5-2Socket實現(xiàn)原理圖:圖2-2Socket實現(xiàn)原理圖3系統(tǒng)需求分析3.1項目設(shè)計的需求描述隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,即時通信(InstantMessaging縮寫為IM或IMing成為網(wǎng)絡(luò)在線活動中重要的業(yè)務(wù),它是使人們能網(wǎng)上識別在線用戶并和他們交換實時消息的技術(shù)。設(shè)計一個基于JAVA的網(wǎng)絡(luò)即時通信系統(tǒng),在通用計算機網(wǎng)絡(luò)上實現(xiàn)信息傳遞,包括基本的文本消息傳遞和音頻信號的傳輸,實時獲取聯(lián)系人狀態(tài),對常用聯(lián)系人進行管理等。主要考慮以下基本功能:注冊并登錄服務(wù)器獲得用戶列表,用戶運行客戶端程序后,服務(wù)器端程序在公網(wǎng)上運行,與其他用戶進行點對點的實時消息通信。統(tǒng)一建模語言(UML是可視化建模語言,用于構(gòu)造軟件系統(tǒng)和描述可視化。UML簡單且功能強大,提供了大多數(shù)面向?qū)ο蠛诵母拍?還提供了擴展方案。UML通過提供九種圖(類圖、對象圖、用例圖、協(xié)作圖、狀態(tài)圖、順序圖、部署圖、組件圖、活動圖可視化的表達語義。圖(Diagram是模型元素的圖形符號化,由一組元素的圖形表示。UML通過這九種圖可以可視化描述世界上的復(fù)雜事物,有很大的靈活性。RationalRose是基于UML的工具。面向?qū)ο蠹夹g(shù)逐步成熟與軟件工程化思想日益深入,提出基于組件的軟件開發(fā)模式和自動的、科學(xué)的技術(shù)和產(chǎn)品,覆蓋了軟件工程各個環(huán)節(jié),如可視化建模、過程自動化、需求管理、軟件質(zhì)量自動保證、軟件配置管理和開發(fā)工具等。不論是系統(tǒng)需求階段,還是在對象的軟件的分析與設(shè)計、實現(xiàn)和測試階段,它提供了清晰的UML工具和表達方法,建立了相應(yīng)的軟件模型。因此,本系統(tǒng)可以使用面向?qū)ο?JAVA的開發(fā)方法,用UML對整個系統(tǒng)進行設(shè)計分析,并用RationalRose2003作為UML工具。3.2項目設(shè)計的系統(tǒng)用例圖用戶(user通過登錄界面與服務(wù)器(Server進行通信,不僅能夠注冊新賬號,還能通過Server與在線好友進行聊天,包括文本消息傳遞和音頻信號傳輸,還能管理自己的好友列表,如刪除好友等。如圖3-1系統(tǒng)的總體功能用例圖所示:圖3-1系統(tǒng)的總體功能用例圖注冊登錄:用戶可以通過注冊界面填寫必要的信息來是申請到一個賬戶,并可直接跳轉(zhuǎn)到登錄界面,輸入密碼即可登錄。好友聊天:用戶可以從在線好友列表中選擇好友進行消息傳遞,也可以跟陌生人進行聊天。用戶管理:用戶可以進行添加好友、刪除好友等操作。語音聊天:用戶可以選擇在線用戶進行語音聊天。本系統(tǒng)主要通過客戶端,服務(wù)器端來體現(xiàn)聊天系統(tǒng)的基本功能。(1服務(wù)器端:1.處理用戶注冊2.處理用戶登錄3.處理用戶發(fā)送信息4.處理用戶得到信息5.處理用戶退出6.保存服務(wù)器日志7.保存用戶聊天信息(2客戶端:1.用戶注冊界面及結(jié)果2.用戶登錄界面及結(jié)果3.用戶發(fā)送信息界面及結(jié)果4.用戶得到信息界面及結(jié)果5.用戶退出界面及結(jié)果3.3user注冊活動圖啟動Server后,Server開啟一個Socket連接的監(jiān)聽線程,用來監(jiān)聽來自網(wǎng)絡(luò)的連接。當(dāng)User使用Client進行注冊賬號,user要把個人資料填寫完并發(fā)送給Server。Server來驗證user填寫的個人資料是否合法,如果合法,Server將用后臺數(shù)據(jù)庫表ICQ自動序列生成ICQ號返回給user。如果不合法,Server拒絕申請,并將填寫資料錯誤的信息返回給user。如圖3-2user注冊活動圖:圖3-2user注冊活動圖3.4user登錄活動圖啟動Sever后,Server開啟一個Socket連接的監(jiān)聽線程,用來監(jiān)聽來自網(wǎng)絡(luò)的任何連接。當(dāng)Client申請登錄,user使用賬號和密碼進行登錄,Server將user發(fā)過來的user信息和Server后臺數(shù)據(jù)庫里的user信息進行比對。如果user的賬號和密碼與之完全匹配,則user成功登錄,并且Server返回給user登錄賬號的好友列表、好友資料、好友狀態(tài);如果不匹配,Server則告知Client的user登錄失敗。如圖3-3user登錄活動圖:圖3-3user登錄活動圖3.5user好友添加時序圖userA打開好友添加面板并填寫添加請求。請求先是由userA發(fā)送給Server,再由Server轉(zhuǎn)發(fā)給userB,如果userB接收到請求成功,userB的Client則自動打開一個好友請求界面告訴userB有陌生人添加請求。UserB接收請求并回復(fù),將由Server將該回復(fù)轉(zhuǎn)發(fā)userA。如圖3-4user好友添加時序圖:圖3-4user好友添加時序圖3.6user聊天時序圖userA使用Client登錄,登錄成功后選擇userB,打開聊天面板并填寫聊天內(nèi)容。消息先是由userA發(fā)送給Server,然后由Server轉(zhuǎn)發(fā)給userB,如果userB接收消息成功,Server將發(fā)送成功的消息返回給UserA;如果userB接收消息失敗,Server將發(fā)送失敗的消息返回給userA。user聊天時序圖,如圖3-5:圖3-5user聊天時序圖3.7user語音聊天時序圖userA打開語音聊天界面,選擇好友userB,向他發(fā)送語音請求。該請求先是由userA發(fā)送給server,然后由server轉(zhuǎn)發(fā)給userB。userB通過語音聊天界面可以接收到請求并做相應(yīng)的處理,如拒絕或者接受。userB將處理請求發(fā)送給Server,再由server根據(jù)userB的處理請求做出相應(yīng)處理。如果userB同意語音請求,則userA和userB將通過建立UDP連接來實現(xiàn)發(fā)送和接收語音消息。UMLuser語音聊天時序圖,如圖3-6:圖3-6user語音聊天時序圖4系統(tǒng)數(shù)據(jù)庫設(shè)計4.1用戶和客戶端的關(guān)系本系統(tǒng)采用SQL2005數(shù)據(jù)庫管理系統(tǒng),用于實現(xiàn)系統(tǒng)信息的管理。根據(jù)系統(tǒng)需求,列出以下數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):Client:注冊、登錄、查看資料、離線消息傳遞等。User:昵稱、性別、號碼、年齡、地址、等。Client和User之間是使用的關(guān)系。user登錄成功之后則可查詢在線user的基本信息??僧嫵鰯?shù)據(jù)庫E-R圖,如圖4-1所示:圖4-1系統(tǒng)數(shù)據(jù)庫E-R圖4.2用戶和登錄記錄的關(guān)系列出user與聊天記錄、user與登錄記錄的數(shù)據(jù)結(jié)構(gòu)。登錄記錄:登錄次數(shù)、上線時間、下線時間、登錄的IP。User與登錄記錄之間是通過號碼聯(lián)系。所以,user與登錄記錄的E-R圖如圖4-2所示。圖4-2user與登錄記錄E-R圖4.3用戶和聊天記錄的關(guān)系聊天記錄:接收消息內(nèi)容、發(fā)送消息內(nèi)容、發(fā)送消息時間、接收消息時間。User與聊天記錄之間是通過登錄聯(lián)系,登錄的屬性包括IP、號碼等。所以,user與聊天記錄的E-R圖如圖4-3所示:圖4-3user與聊天記錄E-R圖4.4數(shù)據(jù)庫中表格的設(shè)計本系統(tǒng)需要用SQLserver2005實現(xiàn)數(shù)據(jù)表,user個人信息表分別設(shè)id、nickname、age、sex、password、address等字段,其中id和age為數(shù)字數(shù)據(jù)類型,nickname、age、sex、password、address為文本數(shù)據(jù)類型。選擇使用設(shè)計器創(chuàng)建表新建數(shù)據(jù)庫,如圖4-4數(shù)據(jù)庫窗口所示:圖4-4數(shù)據(jù)庫窗口因此,對user個人信息表進行創(chuàng)建、保存,user個人信息表如表4-5所示:表4-5user個人信息表列名數(shù)據(jù)類型長度允許空idint4Nonicknametext16Yessextext16Yesageint4Yesaddresstext16Yespasswordtext16Yes對表3-2定義的字段進行詳細的信息填充,在user登錄成功并獲得user列表后便可通過點擊user資料看到在線user的nickname、age、sex、id、address等詳細的基本信息。user登錄記錄表分別設(shè)onlinetime、loginIP、logindegree、outlinetime字段,其中outlinetime、oulinetime字段為日期的數(shù)據(jù)類,loginlP字段為文本的數(shù)據(jù)類型,logindegree字段為整數(shù)的數(shù)據(jù)類型。user登錄記錄發(fā)如表4-6所示:表4-6user登錄記錄表聊天記錄表分別設(shè)recvmsg、sendmsg、recvtime、sendtime字段,其中sendtime、recvtime字段為日期型的數(shù)據(jù)類型,sendmsg、recvmsg字段為文本的數(shù)據(jù)類型。user聊天記錄表如表4-7所示:表4-7user聊天記錄表列名數(shù)據(jù)類型長度允許空sendmsgtext16Yesrecvmsgtext16Yessendtimedatetime8Norecvtimedatetime8No注冊user應(yīng)該具有昵稱、Icqno號碼、狀態(tài)、性別、IP、密碼、住址、個人資料、頭像、Email信息,其中,昵稱、Icqno號碼、密碼狀態(tài)在數(shù)據(jù)庫中不能為空值,密碼和昵稱由user填寫,狀態(tài)由Server根據(jù)user在線情況自動更新,Icqno號碼由數(shù)據(jù)庫自動序列生成。user使用Client、Server進行通信。Server根據(jù)Client的請求對后臺數(shù)據(jù)庫進行寫入、查詢的操作。后臺數(shù)據(jù)庫存儲所有Icqnouser的個人信息和好友列表。user通過Client向Server發(fā)出請求來修改個人信息和管理好友列表。5詳細設(shè)計5.1系統(tǒng)總體流程圖5.2系統(tǒng)客戶端流程圖5-2客戶端流程圖6系統(tǒng)實現(xiàn)6.1編寫服務(wù)器端程序1.接受用戶注冊信息并且保存在一個基于文件的對象型數(shù)據(jù)庫。2.能夠允許已注冊的用戶登錄聊天界面并可以進行聊天。3.能夠接受私聊信息并且發(fā)送給指定的用戶。4.服務(wù)器能夠運行在自定義的端口上1001。5.服務(wù)器可以監(jiān)控用戶列表和用戶聊天信息(私聊除外。6.服務(wù)器踢人,并且發(fā)送通知。7.服務(wù)器能夠保存日志?;诜?wù)器跨平臺運行的構(gòu)想,服務(wù)器的后臺數(shù)據(jù)庫使用SQLServer2005。(1register表:表6-1register表(2login表:表6-2Login表此表主要包含了用戶基本帳戶信息。聊天系統(tǒng)采用UserName作為用戶帳號,并給每個用戶自動生成一個唯一ID來做系統(tǒng)內(nèi)部的用戶標識。首先要啟動服務(wù)器,聊天服務(wù)器的啟動界面如圖6-3:圖6-3聊天服務(wù)器的啟動界面1.到數(shù)據(jù)庫讀數(shù)據(jù)首先,創(chuàng)建一個File文件類,載入“user.txt”文本,再用對象輸入流ObjectInputStream把用戶信息導(dǎo)入到系統(tǒng)中。2.客戶端請求注冊客戶端要通過Register.java請求注冊,并填寫注冊信息,能夠驗證密碼是否符合規(guī)定,能夠判斷是否兩次密碼輸入一致,如果不一致會彈出提示信息如要求重新輸入,最后將請求信息發(fā)送給服務(wù)器端??蛻舳苏埱笞圆糠执a如下:intflag=0;//是否重名判斷標志Register_CustomerclientMessage=(Register_Customerobj;FilefList=newFile("user.txt";if(fList.length(!=0//判斷是否是第一個注冊用戶{ObjectInputStreamobjInput=newObjectInputStream(newFileInputStream(fList;vList=(VectorobjInput.readObject(;//判斷是否有重名for(inti=0;i<vList.size(;i++{Register_Customerreg=(Register_CustomervList.elementAt(i;toClient.println("注冊名重復(fù),請另外選擇";flag=1;break;toClient.println("禁止使用此注冊名,請另外選擇";flag=1;break;3.服務(wù)器端響應(yīng)服務(wù)器端收到注冊請求后會把對象輸入流轉(zhuǎn)化為文件輸出流,并且反饋給客戶端??蛻舳耸盏阶孕畔⒑髸谇芭_填寫注冊信息,然后創(chuàng)建文件輸出流,再用對象輸出流包裝后寫入本地文件將其持久化。最后關(guān)閉對象輸出流和文件輸入流。服務(wù)器響應(yīng)部分代碼如下://將向量中的類寫回文件FileOutputStreamfile=newFileOutputStream(fList;ObjectOutputStreamobjout=newObjectOutputStream(file;objout.writeObject(vList;4.向客戶端返回信息將用戶注冊成功的信息或失敗的信息用打印流包裝Socket之后,將注冊結(jié)果的詳細信息輸出給客戶端。向客戶端返回信息部分代碼如下://發(fā)送注冊成功信息toClient.println(clientMessage.custName+"注冊成功";Datet=newDate(;log("用戶"+clientMessage.custName+"注冊成功,"+"注冊時間:"+t.toLocaleString(+"\n";5.關(guān)閉Socket連接當(dāng)以上的程序都正常運行結(jié)束后,需要關(guān)閉Socket連接,否則服務(wù)器與客戶端之間的資源將會浪費。關(guān)閉Socket連接部分代碼如下://關(guān)閉Socket連接部分file.close(;objout.close(;fromClient.close(;1.到數(shù)據(jù)庫讀用戶數(shù)據(jù)打開用戶數(shù)據(jù)庫文件“User.txt”,把用戶數(shù)據(jù)對象集載入內(nèi)存,供下面的程序使用。到數(shù)據(jù)庫讀用戶數(shù)據(jù)的部分代碼如下://讀文件FileInputStreamfile3=newFileInputStream("user.txt";ObjectInputStreamobjInput1=newObjectInputStream(file3;vList=(VectorobjInput1.readObject(;2.驗證用戶名是否存在到對象數(shù)據(jù)庫中查找是否存在和登錄用戶的用戶名相同的記錄,如果有則繼續(xù)驗證,否則退出驗證處理,并返回“沒有此用戶”錯誤提示。用戶登陸程序模塊部分代碼如下:find=1;iftoClient.println("密碼不正確";break;}else{//判斷是否已經(jīng)登錄intlogin_flag=0;for(inta=0;a<userOnline.size(;a++{String_custName=((CustomeruserOnline.elementAt(a.custName;iflogin_flag=1;break;}}if(userOnline.size(>=50{toClient.println("登錄人數(shù)過多,請稍候再試";break;聊天服務(wù)器的用戶登錄界面如圖6-4:圖6-4聊天服務(wù)器的用戶登錄界面1.接收退出信息當(dāng)用戶退出時,客戶端將向服務(wù)器退出對象發(fā)送基于Socket的對象輸出流。2.在線列表中刪除用戶用戶退出后,程序要把用戶從在線列表中刪除,否則用戶退出后用戶卻還在在線列表中,那么該用戶下次將會無法正常登錄。3.更新在線列表用戶退出后,將服務(wù)器端監(jiān)控界面的用戶列表更新。否則用戶數(shù)據(jù)將會不同步。聊天服務(wù)器的用戶退出界面如圖6-5:圖6-5聊天服務(wù)器的用戶退出界面用戶退出模塊程序部分代碼如下:publicvoidserverExit({Exitexit=newExit(;exit=(Exitobj;removeUser(exit;//chenminsFrame.ti="";}Datet=newDate(;log("用戶"+exit.exitname+"已經(jīng)退出,"+"退出時間:"+t.toLocaleString(;freshServe
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- epc和融資合同范例
- 課題立項申報書成果形式
- 美發(fā)教學(xué)課題申報書
- 課題申報書封面需蓋章嗎
- 農(nóng)村房產(chǎn)協(xié)議合同范例
- 包工清包合同范本
- 合作飯店合同范本
- 婦產(chǎn)科課題申報書
- 醫(yī)院投資合同范本
- 課題申報書怎么評判
- GB/T 8813-2020硬質(zhì)泡沫塑料壓縮性能的測定
- GB/T 15057.2-1994化工用石灰石中氧化鈣和氧化鎂含量的測定
- 潔凈廠房監(jiān)理實施細則
- 哈工大研究生課程-高等結(jié)構(gòu)動力學(xué)-第四章課件
- 當(dāng)代教育心理學(xué)(范圍)課件
- 完整版漢語語法知識課件
- 2023年湖南工業(yè)職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試筆試題庫及答案解析
- 2022年山東交通職業(yè)學(xué)院單招綜合素質(zhì)考試筆試試題及答案解析
- 法院卷宗范本
- 公司戰(zhàn)略與風(fēng)險管理教案
- 自然辯證法概論課件:自然辨證法概論
評論
0/150
提交評論