




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、命屬獵技上學XfAN UNIVERSITY OF SCIENCE AND TECHNOLOGYJAVA網(wǎng)絡(luò)編程文本傳輸學院:通信與信息工程班級:電子商務(wù)1002班姓名:王鵬飛學號:1007100222JAVA網(wǎng)絡(luò)聊天室功能描述網(wǎng)絡(luò)聊天室是一種應(yīng)用廣泛網(wǎng)絡(luò)聊天方式, 操作簡單,功能豐富,是教學和 學習面向?qū)ο蟮木幊趟枷氲睦硐腠椖???梢允褂枚喾N編程語言設(shè)計和開發(fā)出功能 完善的網(wǎng)絡(luò)聊天室。本系統(tǒng)采用C/S架構(gòu)設(shè)計,用JAVA語言設(shè)計和實現(xiàn),整個項目分為服務(wù)器 端和客戶端。使用了最新的JAVASE標準Swing組件,開發(fā)出簡潔美觀布局合理 的客戶端和服務(wù)器界面;利用 Socket網(wǎng)絡(luò)開發(fā)技術(shù)實現(xiàn)客戶端
2、和服務(wù)器端的連 接訪問,實現(xiàn)網(wǎng)絡(luò)通信功能;通過對數(shù)據(jù)流合理的封裝,實現(xiàn)信息發(fā)送和接受。 同時,采用多線程、多任務(wù)的設(shè)計思想,令服務(wù)器性能穩(wěn)定,客戶端通信流暢, 基本實現(xiàn)聊天室的功能。服務(wù)器端功能:服務(wù)器的基本功能有:啟動服務(wù)器,關(guān)閉服務(wù)器,監(jiān)聽客戶端連接請求,顯 示在線用戶,顯示客戶端連接信息,發(fā)送系統(tǒng)消息等。服務(wù)器端功能描述:1 .啟動服務(wù)器:客戶在運行服務(wù)端程序后,點擊啟動服務(wù)器,服務(wù)器程序創(chuàng)建并箭筒特定端口的ServerSocket并啟動一個主線程,等待客戶端的連接,如果有客戶端連接,服務(wù)器向工作線程隊列中加入與客戶通信的任務(wù),工作線程不斷從工作線程中取出任務(wù)并執(zhí)行。同時在服務(wù)器消息面板
3、中顯示,服務(wù)器啟動成功。2 .關(guān)閉服務(wù)器:服務(wù)器關(guān)閉時,向所有連接的客戶端發(fā)送消息,告知將服務(wù)器 關(guān)閉,同時關(guān)閉socket,之后服務(wù)器界面關(guān)閉3 .監(jiān)聽客戶端請求:服務(wù)器在啟動后一直監(jiān)聽客戶端的運行情況,比如有新用 戶登錄,用戶退出等。4 .顯示在線用戶:用戶登錄后即客戶端與服務(wù)器連接成功,服務(wù)器端用戶列表 界面顯示出所有登錄用戶的用戶名,用戶退出后服務(wù)器更新用戶列表5 .顯示用戶連接信息:用戶在登錄成功后,服務(wù)器端服務(wù)信息界面顯示用戶登 錄的信息,包括客戶端IP地址,端口號。6 .發(fā)送系統(tǒng)消息:可以從服務(wù)器端廣播系統(tǒng)消息,該消息會發(fā)送給所有連接的 客戶端,此功能可用于服務(wù)器管理者向所有用戶
4、發(fā)送重要的系統(tǒng)消息。服務(wù)器界面如下圖所示:客戶端功能:客戶端有用戶登錄功能,連接服務(wù)器功能,斷開服務(wù)器供,顯示聊天室所有在線 用戶功能,統(tǒng)計聊天室用戶數(shù)量功能,顯示當前用戶用戶名的功能,聊天室聊天 功能,用戶退出聊天室等功能。功能圖如下圖所示:具體功能描述:1 .用戶登錄:用戶打開聊天室客戶端程序后,輸入用戶名,點擊連接服務(wù)器, 就可以進入聊天室系統(tǒng),為防止用戶不知道服務(wù)地址和端口號, 用戶界面上已經(jīng) 將服務(wù)地址和端口號設(shè)定,且不能更改,用戶只需輸入用戶名,只要用戶名符合 要求,可以輸入任何用戶名,無需注冊,任何人都可以登錄,退出后不會留下個 人信息,如果需要再次登錄只需再次輸入用戶名即可,
5、可以與上次登錄的用戶名 不一致。2 .連接服務(wù)器:用戶在輸入用戶名后,點擊連接服務(wù)器即可進入聊天室系統(tǒng), 否則無法發(fā)送消息。此時服務(wù)器接收客戶端的請求,與客戶端建立通信,服務(wù)器 顯示用戶的練級信息,及新用戶的用戶名,端口號,同時告知聊天室其他成員, 某某用戶加入聊天室,更新服務(wù)器與所有客戶端的用戶列表。3 .斷開服務(wù)連接:用戶在登錄聊天室成功后,如果想要退出系統(tǒng),可以點擊斷 開服務(wù)器,或點擊關(guān)閉按鈕,或點擊窗口關(guān)閉按鈕就可退出聊天室,與服務(wù)器斷 開練級,用戶可以重新登錄。4 .顯示在線用戶列表:用戶在登錄聊天室后,服務(wù)器端增加新用戶的用戶名, 同時遍歷原有用戶列表,將新用戶的用戶名增加到用戶列
6、表中, 同時更新所有客 戶端的用戶列表,并顯示更新結(jié)果。5 .統(tǒng)計聊天室所有用戶數(shù)量:在服務(wù)器更細用戶列表后統(tǒng)計用戶數(shù)量,并顯示 在所有客戶端。此功能屬于顯示在線用戶列表的次要功能。6 .顯示當前用戶:用戶登錄后,輸入的用戶名會保存在用戶名輸入文本域內(nèi), 同時在用戶列表中以紅色字體顯示當前用戶的用戶名。如果用戶同時開啟多個客戶端,此功能用于區(qū)分不同的客戶端。7 .聊天功能:這是聊天室的主要功能,用戶可以發(fā)送任何文字與聊天室的所有 成員聊天,并且接收其他用戶發(fā)送的消息,類似 QQ群組的功能。8 .退出聊天室:用戶在想要退出聊天室時。點擊關(guān)閉按鈕即可突出聊天室。此 功能類似關(guān)閉連接功能??蛻舳诵Ч?/p>
7、效果如下:(界面效果隨系統(tǒng)主題更改)H天室!舄服勢苣理器用戶名:劉備端口號:|8000 閘警地址|127.0.0.1系統(tǒng)通知:黃忠進入“天堂趙云:主公在嗎?黃忠:不知道?。繌堬w:大哥去和曹操喝酒去了,不讓俺張飛跟著,氣煞俺也,美羽:三弟,真要胡說,大哥明明在與軍師簿商討對敵側(cè)略口哪里喝酒了.文I儒:子龍解何事甘張飛:大哥,你在啊,我以為你去喝酒了,啤嘿。美羽:是啊,大哥不是說要去商時軍事嗎(?系董通知:黃田離開聊天室系統(tǒng)逋知:關(guān)羽離開就天室劉普:鵝和軍師已商時克華,Qfill進來.劉備:子龍找我何事?越云:主公,吳國使者求見主品.系統(tǒng)逋知:軍國大事,真在就聊.張飛:呵呵張飛去世.系統(tǒng)通知:張飛
8、離開聊天室1趙云:主公.我也走了,系統(tǒng)通軸:趙云離開聊天室1劉周:等等,我等一同前往,看使者有何話說口撕開服務(wù)用戶列表在線用尸1當前用戶:劉備美閉實現(xiàn)技術(shù)a)使用ServerSocket Socket完成服務(wù)端和客戶端的連接b)服務(wù)端使用多線程的方式可以接受多個客戶端。c)使用對象的方式,在服務(wù)端和客戶端之間傳送數(shù)據(jù)。問題解決辦法d)服務(wù)端和客戶端的數(shù)據(jù)通過什么方式維護?將這些數(shù)據(jù)封裝成類,服務(wù)器和客戶端發(fā)送對象來維護。e)當服務(wù)端強制退出時,應(yīng)該做什么處理?告訴客戶端服務(wù)端退出,然后關(guān)閉所有到服務(wù)端的連接??蛻舳烁鶕?jù)服 務(wù)端退出,斷開和服務(wù)端的連接。服務(wù)端效果圖:客戶端效果圖:用戶名:張三端
9、口號:8000那野地址127.0.0.1二動產(chǎn) 斷開服箔張三 我來了!大家鼓掌電/r用戶列表在就用尸1當前用戶:張三關(guān)閉群聊通信:用戶君:曲季也用戶名二條三值口號二8000口號二aooo用掙電址h歌虹1曼法地址1Z7AQ1Hf開服藥斯開旭若用F列懸用列野在戶2在地用戶a當前用4:甲四當廂用戶SK =李國后烏管理明設(shè)計思路:實現(xiàn)網(wǎng)絡(luò)通信必須建立在 TCP/IP協(xié)議的基礎(chǔ)上,致力于實現(xiàn)應(yīng)用層,傳輸 層向應(yīng)用層提供套接字 Socket接口 .socket封裝下層的數(shù)據(jù)傳輸細節(jié)。應(yīng)用層的 程序通過Socket來建立與遠程主機的連接,以及進行數(shù)據(jù)傳輸。聊天室程序采用C/S架構(gòu),因此先設(shè)計圖形界面,將必要
10、的組件布局好,然 后測試在不同計算機上的顯示效果,然后更改,確定界面沒有問題后,設(shè)計程序的邏輯功能等。服務(wù)器端程序點擊啟動后顯示一個服務(wù)器界面,然后在啟動服務(wù)器上添加監(jiān) 聽器,要使服務(wù)器能穩(wěn)定的收發(fā)數(shù)據(jù),采用 TCP的傳輸模式,服務(wù)器通過一直 監(jiān)聽端口,來接收 客戶程序的連接請求,在服務(wù)器程序中首先創(chuàng)建一個 ServerSocket對象,在構(gòu)造方法中指定監(jiān)聽的端口:serversocket =new ServerSocket(8000);/ 監(jiān)聽 8000 端口服務(wù)器端口號使用1025到65535之間的自定義的服務(wù)端口。ServerSocket的構(gòu)造方法在操作系統(tǒng)中把當前進程注冊為服務(wù)器進程,
11、服務(wù)器程序調(diào)用ServerSocket 對象的accept(), 方法,通過該方法一直監(jiān)聽端口,等待客戶端的連接請求,如果接收到一個連接請求,accept() 方法返回一個socket 對象,這個Socket對象與客戶端的Socket對象形成一條通 向線路:socket =serversocket .accept();/ 等待客戶端的連接請求Socket類通過調(diào)用inputStream() 和outputStream() 方法,返回輸入流InputStream和輸出流OutputStream 對象。程序向輸出流寫數(shù)據(jù),完成發(fā)送數(shù)據(jù),從輸入流讀數(shù)據(jù),接收來自對方的數(shù)據(jù)。outputStream
12、=newObjectOutputStream(socket.getOutputStream();inputStream =newObjectInputStream(socket.getInputStream();ObjectOutputStream 繼承自 OutputStream服務(wù)器啟動后就一直監(jiān)聽端口等待客戶端連接,將客戶端傳過來的數(shù)據(jù)封裝成對象,然后通過ObjectOutputStream將Java對象的基本數(shù)據(jù)類型寫入OutputStream??梢允褂?ObjectInputStream讀取(重構(gòu))對象。通過使用流則 可以在另一臺主機上或另一個進程中重構(gòu)對象??蛻舳素斖ㄍ瑯拥乃悸废仍O(shè)計程序的界面,然后在不同組件中添加監(jiān)聽器, 客戶進程的端口由所在主機的操作系統(tǒng)動態(tài)分配, 當客戶的進程要求與一個服務(wù) 器進程進行連接時操作系統(tǒng)為客戶進程隨機分配一個還未被占用的端口,當客戶進程與服務(wù)器斷開連接時這個端口就被釋放??蛻魡涌蛻舳说某绦蛉缓筝斎胗脩裘葘τ脩裘M行校驗,輸入符合要求后,然后將用戶名,端口號,主機地址封裝成對象,然后調(diào)用socket對象的方法將數(shù)據(jù)發(fā)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專利代理委托合同范例
- 健身三店預售合同范例
- 修剪草坪合同范例
- 腦膜轉(zhuǎn)移治療
- 養(yǎng)殖人員合同范例
- 產(chǎn)品內(nèi)銷合同范例
- 中國老撾投資合同范例
- 幼兒園獲獎公開課:中班科學活動《水的心情》課件
- 借名購房合同范例
- 2025年平方根測試題及答案
- 考生個人簡歷及自述表
- 試講評分標準
- 硬質(zhì)支氣管鏡技術(shù)參數(shù)要求
- 《網(wǎng)紅現(xiàn)象的研究背景、意義及文獻綜述(2100字)》
- 管接頭注塑模具設(shè)計開題報告
- 最新-駕駛員職業(yè)心理和生理健康知識二-課件
- 加氫裝置催化劑硫化方案
- 核電廠概率安全評價概述課件
- 2022“博學杯”全國幼兒識字與閱讀大賽選拔試卷
- 幼兒園硬筆專用字帖大寫數(shù)字描紅
- 滬教牛津版四年級上冊英語全冊課件
評論
0/150
提交評論