【正文】
果不正確,返回一個(gè)提示信息。最后監(jiān)聽線程會(huì)通過 Socket將結(jié)果返回給客戶端。通過線程來接收客戶端發(fā)送的所有數(shù)據(jù)。其中,聊天功能又分為私聊和群聊;好友管理分為查找好友、添加好友、刪除好友以及備注好友姓名;資源共享主要是用戶可以分為好友的共享資源。UserClass 包括用戶的個(gè)人信息,如 IP、用戶名等。MainFrame 系統(tǒng)的主界面(包括用戶列表等)。Client:負(fù)責(zé)具體發(fā)送和接收數(shù)據(jù)。示意圖如下:基于 Java 的網(wǎng)絡(luò)聊天工具的開發(fā)與實(shí)現(xiàn)10圖 系統(tǒng)功能模塊圖 系統(tǒng)類圖 S o c k e t+ s e n d ( i n p a c k e t : v o i d ): v o i d ( ) s e r v e r l i s t e n : F r o m S e r v e r L i s t e n i n : O b j e c t I n p u t S t r e a m o u t : O b j e c t O u t p u t S t r e a m m a i n f r a m e : M a i n F r a m eC l i e n tT h r e a d+ r u n ( ) : v o i d ( ) c l i e n t : C l i e n tF r o m s e r v e r l i s t e n c l i e n t : C l i e n t u s e r i n t o : J C h a t U s e r I n f oM a i n F r a m e+ g e t F r i e n d s ( ) : M a p ( )+ s e t F r i e n d s ( ) : v o i d ( ) u s e r f r i e n d s : J C h a t U s e r c l a s s f r i e n d s : M a pJ C h a t U s e r I n f o i d : i n t a c c o u n t : i n tJ C h a t U s e r C l a s s1*1*1*發(fā)送消息和接收消息 監(jiān)聽服務(wù)器是否發(fā)送數(shù)據(jù)主顯示界面用戶個(gè)人信息圖 系統(tǒng)類圖MyQ系 統(tǒng)聊 天 好 友 管 理 資 源 共 享私 聊 群 聊 查 找 好 友 添 加 好 友 刪 除 好 友 訪 問 共 享資 源備 注 姓 名基于 Java 的網(wǎng)絡(luò)聊天工具的開發(fā)與實(shí)現(xiàn)11Socket:非自定義類。好友管理系統(tǒng)的功能有:1)查找好友;2)添加好友;3)刪除好友;4)備注姓名?;?Java 的網(wǎng)絡(luò)聊天工具的開發(fā)與實(shí)現(xiàn)9 系統(tǒng)總體設(shè)計(jì) 系統(tǒng)方案設(shè)計(jì)圖 系統(tǒng)方案設(shè)計(jì)圖 系統(tǒng)功能模塊圖本系統(tǒng)主要由由三個(gè)子系統(tǒng)組成:1)聊天子系統(tǒng);2)好友管理子系統(tǒng);3)資源共享子系統(tǒng)。還有一個(gè)重要的步驟就是添加共享文件或目錄。在好友列表中打開用戶信息顯示界面, 點(diǎn)擊“刪除該好友”菜單項(xiàng)后可將此人刪除,若點(diǎn)擊“備注姓名”則可以對(duì)好友進(jìn)行姓名備注,分別記憶以及管理。打開一個(gè)用戶信息顯示界面,點(diǎn)擊 “添加為好友”菜單項(xiàng)后可將此人加為好友。唯一的不同就是服務(wù)器會(huì)將信息轉(zhuǎn)發(fā)給指定的一到多個(gè)成員。4)群聊群聊,就是多人一起聊天。3)私聊私聊就是兩個(gè)聊天。2)登陸在客戶端,用戶輸入其用戶名和密碼,然后建立與服務(wù)器的連接,告訴服務(wù)器我要登錄,服務(wù)器收到后,開始讀取數(shù)據(jù)庫,然后與用戶輸入的信息比較,如果成功,便打開主程序窗口?;?Java 的網(wǎng)絡(luò)聊天工具的開發(fā)與實(shí)現(xiàn)8第 3 章 系統(tǒng)設(shè)計(jì) 系統(tǒng)功能設(shè)計(jì)1)用戶注冊服務(wù)器收到用戶的注冊請(qǐng)求,便開始接受客戶傳遞的信息,諸如客戶的昵稱,密碼,性別,頭像,個(gè)人資料等,接受完畢后,便通過后臺(tái)數(shù)據(jù)庫連接,然后向數(shù)據(jù)庫添加記錄。通信窗口包括對(duì)方用戶名、對(duì)方形象、對(duì)方主機(jī)信息和 IP 信息。根據(jù)已有的需求信息和功能分析,設(shè)計(jì)的系統(tǒng)主窗口具有用戶基本信息、當(dāng)前時(shí)間、好友列表等顯示功能。 界面需求界面設(shè)計(jì)美觀,人機(jī)交互界面友好,聊天對(duì)話框線程支持,實(shí)現(xiàn)無限制數(shù)量用戶聊天,服務(wù)器端無特殊要求。 性能需求支持網(wǎng)絡(luò)通信,實(shí)現(xiàn)全方位、多功能的信息通信功能。備注姓名:對(duì)好友進(jìn)行姓名備注,方便自己記憶。2)好友管理查找好友:根據(jù)好友 IP 查找好友信息添加好友:根據(jù)查找到的好友信息,將其添加為自己的好友。基于 Java 的網(wǎng)絡(luò)聊天工具的開發(fā)與實(shí)現(xiàn)7第 2 章 系統(tǒng)需求分析 基本功能需求1)聊天私聊:私聊就是兩個(gè)之間聊天,即一對(duì)一。反向工程有兩個(gè)主要用途,其一是舊有的源碼反轉(zhuǎn)成圖之后,可以構(gòu)建 UML 模型的方式繼續(xù)將新的設(shè)計(jì)添加上去;另一項(xiàng)用途是想要解析源碼時(shí),可以通過反轉(zhuǎn)的類圖來理解,不再需要查看一行又一行的代碼,這將節(jié)省大量的時(shí)間和精力。? 可導(dǎo)出多種格式圖片:JPG、JPEG 、BMP 等格式的圖片文件。它具有如下一些特點(diǎn):? 可繪制多種 UML 圖:用例圖、類圖、時(shí)序圖、狀態(tài)圖、活動(dòng)圖等。Eclipse 是綠色軟件,其下載與安裝非常簡單,但是如果需要使用 Eclipse來開發(fā) J2EE,為了提高開發(fā)的效率,可以下載 MyEcilpse 插件或者 Lomboz 插件,其中 Myeclipse 是收費(fèi)軟件,可以直接下載 exe 進(jìn)行安裝,而 Lomboz 是開源插件,其使用是完全免費(fèi)的。同時(shí)各個(gè)領(lǐng)域的開發(fā)人員通過開發(fā)插件,可以構(gòu)建與 Eclipse 環(huán)境無縫集成的工具。Eclipse 只是一個(gè)框架軟件,本身不能開發(fā)程序,但它可以安裝各種插件。就是集成了代碼編寫功能、分析功能、編譯功能、debug 功能等一體化的開發(fā)軟件套。關(guān)閉:通信結(jié)束時(shí),再將所建的虛擬連接拆除。Socket 程序的工作過程:建立 Socket 連接:在通信開始之前由通信雙方確認(rèn)身份,建立一條專用的虛擬連接通道。具體的說:一個(gè)服務(wù)器應(yīng)用程序一般偵聽一個(gè)特定的端口等待客戶端的連接請(qǐng)求,當(dāng)一個(gè)連接請(qǐng)求到達(dá)時(shí),客戶端和服武器端建立一個(gè)通信連接,在連接過程中,客戶端被分配一個(gè)本地端口與一個(gè) Socket 建立連接,客戶端通過寫Socket 來通知服務(wù)器,以讀 Socket 中的信息,類似的服務(wù)器也獲得一個(gè)本地端口,它需要一個(gè)新的端口號(hào)來偵聽原始端口上的其他連接請(qǐng)求。 SocketSocket,簡稱套接字,用于實(shí)現(xiàn)網(wǎng)絡(luò)上客戶和服務(wù)器之間的連接。端口實(shí)際是一個(gè) 16 位長的 地址,他的范圍是 0~65535 之間,其中 0~1023 是熟知端口,主要是給提供服務(wù)的應(yīng)用程序使用,這些端口是所有應(yīng)用進(jìn)程都只道的,1024~65535為一般端口,也稱動(dòng)態(tài)端口、連接端口,用來隨時(shí)分配要求通信的客戶端應(yīng)用程序。TCP 調(diào)用 IP 接口,向 TCP 提供所有 TCP 需要的服務(wù)。(2)TCP/IP 協(xié)議進(jìn)行傳輸數(shù)據(jù)傳輸?shù)倪^程:應(yīng)用程序?yàn)榱藗鬏敂?shù)據(jù)會(huì)調(diào)用 TCP,將數(shù)據(jù)和對(duì)應(yīng)的參數(shù)傳給 TCP,將 TCP 數(shù)據(jù)包封裝在 IP 包內(nèi),通過網(wǎng)絡(luò)送給目的 TCP。 統(tǒng)一分配網(wǎng)絡(luò)地址,使得每個(gè) TCP/IP 設(shè)備在網(wǎng)絡(luò)中都具有唯一的 IP 地址。第三,定義了互聯(lián)網(wǎng)上的傳輸數(shù)據(jù)的基本單元,提供了供路由選擇的信息,沒有差錯(cuò)校驗(yàn)和處理的機(jī)制。IP 協(xié)議的作用:第一,它是網(wǎng)絡(luò)層的協(xié)議,提供互聯(lián)網(wǎng)上數(shù)據(jù)傳輸?shù)慕y(tǒng)一格式。 TCP/IP (1) TCP/IP 協(xié)議的特點(diǎn):TCP/IP(Transmission Control Protocol/Inter Protocol)是傳輸控制協(xié)議/網(wǎng)際協(xié)議的縮寫, TCP/IP 是當(dāng)今網(wǎng)絡(luò)互聯(lián)的核心協(xié)議。 Inter 的 TCP/IP 協(xié)議,提供了與 Inter 的接口。 I/O,包括文件系統(tǒng)、 網(wǎng)絡(luò)、輸入 Socket 編程。、多線程處理、例外處理、數(shù)學(xué)函數(shù)處理等,可以用它簡單地實(shí)現(xiàn) Java 程序的運(yùn)行平臺(tái)。并且 Java 通過接口來支持多重繼承,使之比嚴(yán)格的類繼承具有更靈活的方式和擴(kuò)展性?;?Java 的網(wǎng)絡(luò)聊天工具的開發(fā)與實(shí)現(xiàn)3Java 的設(shè)計(jì)使它適合于一個(gè)不斷發(fā)展的環(huán)境。多線程機(jī)制使應(yīng)用程序能夠并行執(zhí)行,而且同步機(jī)制保證了對(duì)共享數(shù)據(jù)的正確操作。字節(jié)碼本身攜帶了許多編譯時(shí)信息,使得連接過程更加簡單。另外,Java 編譯器是由 Java 語言實(shí)現(xiàn)的,Java 運(yùn)行時(shí)系統(tǒng)由標(biāo)準(zhǔn) C 實(shí)現(xiàn),這使得 Java 系統(tǒng)本身也具有可移植性。這些指令對(duì)應(yīng)于 Java 虛擬機(jī)中的表示,Java 解釋器得到字節(jié)碼后,對(duì)它進(jìn)行轉(zhuǎn)換,使之能夠在不同的平臺(tái)運(yùn)行。Java 不支持指針, 一切對(duì)內(nèi)存的訪問都必須通過對(duì)象的實(shí)例變量來實(shí)現(xiàn),這樣就防止程序員使用 “特洛伊”木馬等欺騙手段訪問對(duì)象的私有成員,同時(shí)也避免了指針操作中容易產(chǎn)生的錯(cuò)誤。通過它提供的類庫可以處理 TCP/IP 協(xié)議,用戶可以通過 URL 地址在網(wǎng)絡(luò)上很方便地訪問其它對(duì)象。Java 語言的設(shè)計(jì)集中于對(duì)象及其接口,它提供了簡單的類機(jī)制以及動(dòng)態(tài)的接口模型,實(shí)現(xiàn)了模塊化和信息隱藏;而類則提供了一類對(duì)象的原型,并且通過繼承機(jī)制,子類可以使用父類所提供的方法,實(shí)現(xiàn)了代碼的復(fù)用?;?Java 的網(wǎng)絡(luò)聊天工具的開發(fā)與實(shí)現(xiàn)2Java 語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務(wù)。Java 正在逐步成為 Inter 應(yīng)用中最主要的開發(fā)語言,它徹底改變了軟件開發(fā)模式,帶來了自 PC 機(jī)以來又一次革命,為飛速發(fā)展的網(wǎng)絡(luò)世界增添了新的動(dòng)力。它可在各式各樣不同機(jī)器、不同操作平臺(tái)的網(wǎng)絡(luò)環(huán)境中開發(fā)軟件??蛻舳酥饕獙?shí)現(xiàn)新建用戶、用戶登錄、好友管理和消息的收發(fā)功能以及群聊功能,客戶端申請(qǐng)與服務(wù)器端建立連接,當(dāng)客戶端與服務(wù)器端建立連接通道后就可以像服務(wù)器端發(fā)送新建用戶信息和登錄信息,以及好友管理、信息編輯、發(fā)送和接收的功能;服務(wù)器端主要完成建立連接、數(shù)據(jù)庫操作和監(jiān)聽客戶三大功能,服務(wù)器端建立一個(gè) Server Socket 的連接,不斷偵聽客戶端是否建立連接或斷開連接,如果有客戶端申請(qǐng)連接就啟動(dòng)線程與客戶端建立連接并按照客戶端的請(qǐng)求對(duì)數(shù)據(jù)庫進(jìn)行操作并把結(jié)果返回給客戶端。本次開發(fā)的網(wǎng)絡(luò)聊天系統(tǒng)是基于開放的 Java 應(yīng)用程序設(shè)計(jì)的,能動(dòng)態(tài)、實(shí)時(shí)地完成信息的傳遞,且具有高效的交互性,能更有效地處理客戶請(qǐng)求,易于維護(hù)和更新。關(guān)鍵詞:Java,交互性, Socket 類,多線程IIABSTRACTThe rapid development of the information works, especially the development and integration of puter and munication technologies, has deeply affected our lives, learning and work. Among them, the Inter chat tool bees an important tool for daily munication, because of it’s low c