版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
閑聊室
一、引言
本文圍繞Java編程語(yǔ)言在網(wǎng)絡(luò)編程方面的詳細(xì)應(yīng)用,論述了運(yùn)用面對(duì)對(duì)象
方法,對(duì)計(jì)算器程序進(jìn)展需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì),最終運(yùn)用Java編程
實(shí)現(xiàn)的全過(guò)程。在編程我們運(yùn)用的java語(yǔ)言,是目前比擬流行的編程語(yǔ)言。在
當(dāng)今這個(gè)網(wǎng)絡(luò)的時(shí)代,java語(yǔ)言在網(wǎng)絡(luò)編程方面的優(yōu)勢(shì)使得網(wǎng)絡(luò)編程有了更好
的選擇。Java語(yǔ)言最大的特點(diǎn)是具有跨平臺(tái)性,使其不受平臺(tái)不同的影響,得
到了廣泛的應(yīng)用。
二、需求分析
2.1開發(fā)背景:
在網(wǎng)絡(luò)越來(lái)越興盛的今日,人們對(duì)網(wǎng)絡(luò)的依靠越來(lái)越多,越來(lái)越離不開網(wǎng)絡(luò),由此
而產(chǎn)生的閑聊工具越來(lái)越多,網(wǎng)絡(luò)閑聊時(shí)一類的閑聊系統(tǒng)的開展日新月異,因此
產(chǎn)生了制作一個(gè)局域網(wǎng)的網(wǎng)絡(luò)閑聊工具的;而且通過(guò)制作該程序還能更好的學(xué)習(xí)
網(wǎng)絡(luò)軟件編程學(xué)問(wèn).
2.2功能要求:
i.找尋效勞器登錄
ii.注冊(cè)帳號(hào)
iii.能夠?qū)崿F(xiàn)點(diǎn)對(duì)點(diǎn)單聊
iv.能夠?qū)崿F(xiàn)群聊
v.能動(dòng)態(tài)更新在線用戶列表
vi.文件傳輸
三、系統(tǒng)設(shè)計(jì)
設(shè)計(jì)思想
整個(gè)系統(tǒng)分為效勞器和客戶端,效勞器端維護(hù)各個(gè)客戶端的信息??蛻舳说?/p>
全部信息發(fā)往效勞器端,再由效勞器進(jìn)展消息的分析處理并做出相應(yīng)的限制,效
勞器端是全部信息的中心,
效勞器端可以查看全部用戶的閑聊記錄,監(jiān)控全部用戶的狀態(tài),發(fā)出用戶上
線、離線提示等公告,客戶端那么供應(yīng)接收公告的功能。
本課程設(shè)計(jì)依據(jù)系統(tǒng)的詳細(xì)功能要求,首先應(yīng)用Socket編程創(chuàng)立客戶端和
效勞器端,每多個(gè)客戶端效勞器端就會(huì)相因的創(chuàng)立一個(gè)線程,它們之間通過(guò)這個(gè)
連接來(lái)實(shí)現(xiàn)數(shù)據(jù)通信;然后在客戶端設(shè)置一個(gè)監(jiān)聽(tīng)器,用于監(jiān)聽(tīng)效勞器發(fā)來(lái)的消
息。并依據(jù)消息做出不同的動(dòng)作。
系統(tǒng)功能
該系統(tǒng)實(shí)現(xiàn)了用戶之間的點(diǎn)對(duì)點(diǎn)單人閑聊,在線用戶之間的群聊。為了加強(qiáng)
之間的信息溝通,還實(shí)現(xiàn)了用戶之間文件傳輸、語(yǔ)音閑聊.在客戶端和效勞器端
都可以查看歷史消息、保存消息、清空消息。為了監(jiān)控用戶之間的狀態(tài),效勞器
還可以實(shí)現(xiàn)踢掉用戶的功能,同時(shí)用戶時(shí)間文件傳輸?shù)男畔⒍紩?huì)在效勞器上顯
/J\o
系統(tǒng)架構(gòu)
1)選擇傳輸限制協(xié)議TCP,運(yùn)用Java的Socket編程機(jī)制,分別建立客戶端
與效勞器端、語(yǔ)音傳輸運(yùn)用的是UDP限制協(xié)議;
2)分別設(shè)計(jì)客戶端與效勞器端的界面,并運(yùn)用Java應(yīng)用程序用戶界面的開
發(fā)工具包Swing進(jìn)展窗體界面的布局,以及實(shí)現(xiàn)局部商口事務(wù)的相應(yīng)。
3.4模塊設(shè)計(jì)
效勞器端:
主要實(shí)現(xiàn)向各個(gè)客戶端發(fā)布系統(tǒng)消息,承受來(lái)自客戶端的各種信息并分別處
理。詳細(xì)功能如下:
①連接限制:包括啟動(dòng)效勞器、斷開效勞器以及斷開某個(gè)客戶端的連接;
②管理作用:包括對(duì)參與閑聊者的昵稱進(jìn)展修改以及向全部或某個(gè)客戶
端發(fā)送消息.,維護(hù)一個(gè)IP地址和昵稱所對(duì)應(yīng)的哈希表,以
便定位到正確的客戶端,且有權(quán)強(qiáng)制修改用戶昵稱;
③刷新列表:在有用戶登陸或離開的時(shí)候?qū)崟r(shí)更新列表,并將信息反應(yīng)到
各個(gè)客戶端;
④登陸信息:檢查用戶是否已登陸,如登錄,發(fā)消息通知全部用戶。同時(shí)
刷新在線用戶列表;
⑤閑聊記錄:能保存閑聊記錄,實(shí)現(xiàn)消息的保存、清空以及杳看等功能;
⑥消息處理:解析客戶端與效勞器端的消息交互類型,并做出相應(yīng)處理,
能夠找到消息所對(duì)應(yīng)的接收端。
客戶端:
主要實(shí)現(xiàn)向效勞器端發(fā)布消息,并且對(duì)來(lái)自效勞器的消息做出相應(yīng)的響應(yīng)。
詳細(xì)功能如下:
①連接功能:輸入效勞器地址,實(shí)現(xiàn)登錄及斷開功能
②登錄設(shè)置:登錄時(shí),發(fā)送消息使效勞器端獲得用關(guān)登錄信息,昵稱及TP
地址記錄到效勞器端維持的哈希表,斷開后發(fā)送消息使TP
地址及昵稱從哈希表中刪除;
③監(jiān)聽(tīng)作用實(shí)現(xiàn)對(duì)效勞器發(fā)送過(guò)來(lái)的消息進(jìn)展監(jiān)聽(tīng)的功能;
④消息處理接收由效勞器端發(fā)送來(lái)的信息,并做出相應(yīng)的響應(yīng);
⑤閑聊記錄實(shí)現(xiàn)閑聊記錄的保存、消空以及查看等功能;
⑥消息處理相應(yīng)從效勞器端接收到的消息交互類型,實(shí)現(xiàn)用戶與用戶之
間的信息交互和文件交互;
四、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
效勞器端
效勞器
該段功能由Server.java文件中的Server類實(shí)現(xiàn),詳細(xì)實(shí)現(xiàn)過(guò)程如下:
①啟動(dòng)效勞并接收連接:效勞器的任務(wù)首先是建立一個(gè)由IP地址到昵稱的映
射的哈希表,用于存放用戶的根本信息;啟動(dòng)效勞器后,等候建立一個(gè)連接,然
后用這個(gè)連接產(chǎn)生的Socket創(chuàng)立一個(gè)Client,同時(shí)檢查該用戶是否已存在哈希
表中,假設(shè)以存在,那么提示該次連接請(qǐng)求失敗,從而實(shí)現(xiàn)限制1P的目的;假
設(shè)不存在,那么將該1P地址及其昵稱或默認(rèn)呢稱的映射添加到哈希表中,接著
效勞器端向全部的用戶發(fā)送管理信息,提示有新的用戶登錄,并且將刷新后的用
戶列表同時(shí)發(fā)送到各個(gè)客戶端。
②關(guān)閉效勞:效勞器端遍歷哈希表,關(guān)掉每一個(gè)用戶對(duì)應(yīng)的Sockel,之后,
關(guān)閉效勞Server,
③管理作用之發(fā)送消息:效勞器端解析由客戶端發(fā)送的請(qǐng)求,假設(shè)限制字以
“SPECIAL"開頭,那么通過(guò)限制字后的昵稱從哈希表中找到對(duì)應(yīng)的用戶,實(shí)現(xiàn)
效勞器端到客戶端的點(diǎn)對(duì)點(diǎn)消息交互;假設(shè)不是以“SPECIAL"開頭,那么實(shí)現(xiàn)
消息的播送發(fā)布。
④管理作用之修改昵稱:首先推斷新的昵稱是否在哈希表中存在,假設(shè)已存
在那么給出錯(cuò)誤提示,否則通過(guò)該用戶的舊昵稱在哈希表中查找到該用戶,并
用欲修改的昵稱替換掉原昵稱;接著刷新效勞器端的用戶列表顯示,最終刷新客
戶端的用戶列表顯示。
⑤管理作用之?dāng)嚅_連接:假設(shè)要斷開某個(gè)客戶端與效勞器的連接,首先向該
用戶發(fā)送被管理員請(qǐng)出系統(tǒng)的信息,然后通過(guò)該用戶的呢稱從哈希表中找到對(duì)應(yīng)
socketsservice及IP地址等信息,再?gòu)拿恳豁?xiàng)信息對(duì)應(yīng)的列表里刪除該用戶
的信息,最終關(guān)閉該用戶的socket,同時(shí)刷新效勞器端以及各個(gè)客戶端的用戶
列表顯示。
⑥在效勞其中,須要同時(shí)處理多個(gè)客戶端的請(qǐng)求,因此此處用到了多線程處
理機(jī)制。在效勞器程序里創(chuàng)立單個(gè)SorvorSocket,并調(diào)用accept()來(lái)等候一
個(gè)新連接,一旦accept()返回,就取得結(jié)果獲得的socket,并用它新建一個(gè)
線程,令其只為那個(gè)特定的客戶端效勞,然后再調(diào)用accept0,等候下一次新
的連接請(qǐng)求。
界面設(shè)計(jì)
該段功能由ServerFrame.java文件中的ServerFrame類實(shí)現(xiàn),詳細(xì)實(shí)現(xiàn)過(guò)
程如下:
窗口布局:效勞器端窗口運(yùn)用了BorderLayout事務(wù)管理器,把整個(gè)容器分
成了五個(gè)區(qū)域:North、South、East>West和Center,每個(gè)區(qū)域放置一個(gè)
面板,每個(gè)面板又分別運(yùn)用不同的事務(wù)管理器放置其他組件,如按鈕、標(biāo)簽、
文本框等,各個(gè)組將構(gòu)成了一個(gè)完整的效勞器端界面。
事務(wù)處理:通過(guò)Java的授權(quán)事務(wù)模型,針對(duì)組件send、Buttonl"Button8,通
過(guò)addXXXListener(主要運(yùn)用了addActionListener)方法注冊(cè)監(jiān)聽(tīng)器,并且實(shí)現(xiàn)
ActionListener接口中的actionPerformed方法,這樣,當(dāng)組件觸發(fā)了相應(yīng)類
型的事務(wù)后,此事務(wù)就會(huì)被傳送給已注冊(cè)的監(jiān)聽(tīng)器,事務(wù)監(jiān)聽(tīng)器負(fù)責(zé)處理事務(wù)。
至此,實(shí)現(xiàn)了窗口對(duì)以下幾個(gè)事務(wù)的響應(yīng):發(fā)送消息、保存消息、清空消息、查
看歷史消息、啟動(dòng)效勞、關(guān)閉效勞、斷開連接、修改昵稱。
五、運(yùn)行結(jié)果
客戶端登陸
客戶端注冊(cè)
客戶端與客服端私聊
客戶端保存記錄文件
/EclipseJavaEnterpris-聊天室[用戶:明]
EditSourceRefa(
【在線用戶列表】在線人數(shù).31聊天信息]
咽【你】對(duì)[所有人】微笑地說(shuō):啊
【111】來(lái)了
111【111】對(duì)【保工課:膽
ackageExplorer眼222黑謁瑞歙播捻
咽
【222】來(lái)了
說(shuō):hello
??聊天室[用戶111]區(qū)
t在線用戶列表]在線人數(shù):31聊天信息】
說(shuō)
—
^明
rm又
L:
有
咽人
北
r又U:
k^督
說(shuō)
有
r人
111kr@
r
222k2x
人
有
r22翁
k2u?
22m?
笑
人
r2有
k22:hello
l£>|[HappyChat]副劉胳S區(qū)
服務(wù)器管理用戶信息管理
[用戶消息][在線用戶列表]
[22:9:29]啊-淅有人咽
[22:11:3]111-WDM111
[22:11:25]11廠海有人闡
222
國(guó)[22:11:54]11卜》筑有人:咽
[22:16:7]222-次俏入咽
國(guó)[22:18:9]222->斫有人:hello
昌
user.t
恒
user2
六、結(jié)論與總結(jié)
課程設(shè)計(jì)結(jié)論
通過(guò)4.3運(yùn)行結(jié)果,可以看出,該課程設(shè)計(jì)利用Java應(yīng)用程序Socket編程
實(shí)現(xiàn)了以下功能:運(yùn)用Java的多線程處理機(jī)制建立兩個(gè)套接字分別作為效勞器
端和客戶端。
在效勞器端實(shí)現(xiàn)了向各個(gè)客戶端發(fā)布系統(tǒng)消息、,承受來(lái)自客戶端的各種信息
并分別處理的功能,可以限制客戶端的連接以及對(duì)用戶的管理作用,并且能夠適
時(shí)檢測(cè)已登錄用戶的連接狀態(tài)且刷新在線用戶列表,更能夠解析客戶端與效勞器
端的消息交互并做出相應(yīng)處理。
在客戶
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026湖北武漢市華中農(nóng)業(yè)大學(xué)韓文元課題組誠(chéng)聘博士后筆試模擬試題及答案解析
- 2026云南怒江州貢山縣醫(yī)療保障局選聘醫(yī)療保障義務(wù)社會(huì)監(jiān)督員10人考試備考題庫(kù)及答案解析
- 2026廣西崇左市江州區(qū)消防救援大隊(duì)招聘財(cái)務(wù)會(huì)計(jì)1人考試備考題庫(kù)及答案解析
- 2026廣東清遠(yuǎn)市佛岡縣石角鎮(zhèn)招聘專職消防安全監(jiān)管員2人考試備考題庫(kù)及答案解析
- 2026內(nèi)蒙古民族大學(xué)招聘銀齡教師17人考試參考題庫(kù)及答案解析
- 2026安徽消防中控員考試參考試題及答案解析
- 2026年溫醫(yī)大眼視光干細(xì)胞生物醫(yī)學(xué)與生物材料工程研究組招聘?jìng)淇碱}庫(kù)及1套完整答案詳解
- 南京古生物所非在編項(xiàng)目聘用人員(勞務(wù)派遣)招聘?jìng)淇碱}庫(kù)(2025年第18期)及參考答案詳解一套
- 中國(guó)支付清算協(xié)會(huì)2026年度公開招聘?jìng)淇碱}庫(kù)含答案詳解
- 興國(guó)縣鼎龍鄉(xiāng)中心幼兒園2026年春季教師招聘?jìng)淇碱}庫(kù)及答案詳解1套
- 2026年中央廣播電視總臺(tái)招聘124人備考筆試題庫(kù)及答案解析
- 四川水利安全b證考試試題及答案
- 2626《藥事管理與法規(guī)》國(guó)家開放大學(xué)期末考試題庫(kù)
- 合資船舶合同范本
- 2025年云南昆明巫家壩建設(shè)發(fā)展有限責(zé)任公司及下屬公司第四季度社會(huì)招聘31人筆試參考題庫(kù)附帶答案詳解(3卷)
- 2026年湖南化工職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)含答案詳解
- 食材配送公司管理制度(3篇)
- 供銷合同示范文本
- 2024年供應(yīng)鏈運(yùn)營(yíng)1+X職業(yè)技能等級(jí)證書中級(jí)考試(含答案解析)
- 《分布式光伏發(fā)電開發(fā)建設(shè)管理辦法》問(wèn)答(2025年版)
- 國(guó)家金融監(jiān)督管理總局真題面試題及答案
評(píng)論
0/150
提交評(píng)論