聊天室程序設(shè)計(jì)_第1頁(yè)
聊天室程序設(shè)計(jì)_第2頁(yè)
聊天室程序設(shè)計(jì)_第3頁(yè)
聊天室程序設(shè)計(jì)_第4頁(yè)
聊天室程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、java網(wǎng)絡(luò)編程-文本傳輸 學(xué)院:通信與信息工程班級(jí):電子商務(wù)1002班姓名:王鵬飛學(xué)號(hào):1007100222網(wǎng)絡(luò)聊天室功能描述網(wǎng)絡(luò)聊天室是一種應(yīng)用廣泛網(wǎng)絡(luò)聊天方式,操作簡(jiǎn)單,功能豐富,是教學(xué)和學(xué)習(xí)面向?qū)ο蟮木幊趟枷氲睦硐腠?xiàng)目??梢允褂枚喾N編程語(yǔ)言設(shè)計(jì)和開(kāi)發(fā)出功能完善的網(wǎng)絡(luò)聊天室。本系統(tǒng)采用c/s架構(gòu)設(shè)計(jì),用java語(yǔ)言設(shè)計(jì)和實(shí)現(xiàn),整個(gè)項(xiàng)目分為服務(wù)器端和客戶(hù)端。使用了最新的java se標(biāo)準(zhǔn)swing組件,開(kāi)發(fā)出簡(jiǎn)潔美觀布局合理的客戶(hù)端和服務(wù)器界面;利用socket網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)實(shí)現(xiàn)客戶(hù)端和服務(wù)器端的連接訪(fǎng)問(wèn),實(shí)現(xiàn)網(wǎng)絡(luò)通信功能;通過(guò)對(duì)數(shù)據(jù)流合理的封裝,實(shí)現(xiàn)信息發(fā)送和接受。同時(shí),采用多線(xiàn)程、多任務(wù)

2、的設(shè)計(jì)思想,令服務(wù)器性能穩(wěn)定,客戶(hù)端通信流暢,基本實(shí)現(xiàn)聊天室的功能。服務(wù)器端功能:服務(wù)器的基本功能有:?jiǎn)?dòng)服務(wù)器,關(guān)閉服務(wù)器,監(jiān)聽(tīng)客戶(hù)端連接請(qǐng)求,顯示在線(xiàn)用戶(hù),顯示客戶(hù)端連接信息,發(fā)送系統(tǒng)消息等。服務(wù)器端功能描述:1. 啟動(dòng)服務(wù)器:客戶(hù)在運(yùn)行服務(wù)端程序后,點(diǎn)擊啟動(dòng)服務(wù)器,服務(wù)器程序創(chuàng)建并箭筒特定端口的serversocket,并啟動(dòng)一個(gè)主線(xiàn)程,等待客戶(hù)端的連接,如果有客戶(hù)端連接,服務(wù)器向工作線(xiàn)程隊(duì)列中加入與客戶(hù)通信的任務(wù),工作線(xiàn)程不斷從工作線(xiàn)程中取出任務(wù)并執(zhí)行。同時(shí)在服務(wù)器消息面板中顯示,服務(wù)器啟動(dòng)成功。2. 關(guān)閉服務(wù)器:服務(wù)器關(guān)閉時(shí),向所有連接的客戶(hù)端發(fā)送消息,告知將服務(wù)器關(guān)閉,同時(shí)關(guān)閉so

3、cket,之后服務(wù)器界面關(guān)閉3. 監(jiān)聽(tīng)客戶(hù)端請(qǐng)求:服務(wù)器在啟動(dòng)后一直監(jiān)聽(tīng)客戶(hù)端的運(yùn)行情況,比如有新用戶(hù)登錄,用戶(hù)退出等。4. 顯示在線(xiàn)用戶(hù):用戶(hù)登錄后即客戶(hù)端與服務(wù)器連接成功,服務(wù)器端用戶(hù)列表界面顯示出所有登錄用戶(hù)的用戶(hù)名,用戶(hù)退出后服務(wù)器更新用戶(hù)列表5. 顯示用戶(hù)連接信息:用戶(hù)在登錄成功后,服務(wù)器端服務(wù)信息界面顯示用戶(hù)登錄的信息,包括客戶(hù)端ip地址,端口號(hào)。6. 發(fā)送系統(tǒng)消息:可以從服務(wù)器端廣播系統(tǒng)消息,該消息會(huì)發(fā)送給所有連接的客戶(hù)端,此功能 可用于服務(wù)器管理者向所有用戶(hù)發(fā)送重要的系統(tǒng)消息。服務(wù)器界面如下圖所示:客戶(hù)端功能:客戶(hù)端有用戶(hù)登錄功能,連接服務(wù)器功能,斷開(kāi)服務(wù)器供,顯示聊天室所有在

4、線(xiàn)用戶(hù)功能,統(tǒng)計(jì)聊天室用戶(hù)數(shù)量功能,顯示當(dāng)前用戶(hù)用戶(hù)名的功能,聊天室聊天功能,用戶(hù)退出聊天室等功能。功能圖如下圖所示:具體功能描述:1. 用戶(hù)登錄:用戶(hù)打開(kāi)聊天室客戶(hù)端程序后,輸入用戶(hù)名,點(diǎn)擊連接服務(wù)器,就可以進(jìn)入聊天室系統(tǒng),為防止用戶(hù)不知道服務(wù)地址和端口號(hào),用戶(hù)界面上已經(jīng)將服務(wù)地址和端口號(hào)設(shè)定,且不能更改,用戶(hù)只需輸入用戶(hù)名,只要用戶(hù)名符合要求,可以輸入任何用戶(hù)名,無(wú)需注冊(cè),任何人都可以登錄,退出后不會(huì)留下個(gè)人信息,如果需要再次登錄只需再次輸入用戶(hù)名即可,可以與上次登錄的用戶(hù)名不一致。2. 連接服務(wù)器:用戶(hù)在輸入用戶(hù)名后,點(diǎn)擊連接服務(wù)器即可進(jìn)入聊天室系統(tǒng),否則無(wú)法發(fā)送消息。此時(shí)服務(wù)器接收客戶(hù)

5、端的請(qǐng)求,與客戶(hù)端建立通信,服務(wù)器顯示用戶(hù)的練級(jí)信息,及新用戶(hù)的用戶(hù)名,端口號(hào),同時(shí)告知聊天室其他成員,某某用戶(hù)加入聊天室,更新服務(wù)器與所有客戶(hù)端的用戶(hù)列表。3. 斷開(kāi)服務(wù)連接:用戶(hù)在登錄聊天室成功后,如果想要退出系統(tǒng),可以點(diǎn)擊斷開(kāi)服務(wù)器,或點(diǎn)擊關(guān)閉按鈕,或點(diǎn)擊窗口關(guān)閉按鈕就可退出聊天室,與服務(wù)器斷開(kāi)練級(jí),用戶(hù)可以重新登錄。4. 顯示在線(xiàn)用戶(hù)列表:用戶(hù)在登錄聊天室后,服務(wù)器端增加新用戶(hù)的用戶(hù)名,同時(shí)遍歷原有用戶(hù)列表,將新用戶(hù)的用戶(hù)名增加到用戶(hù)列表中,同時(shí)更新所有客戶(hù)端的用戶(hù)列表,并顯示更新結(jié)果。5. 統(tǒng)計(jì)聊天室所有用戶(hù)數(shù)量:在服務(wù)器更細(xì)用戶(hù)列表后統(tǒng)計(jì)用戶(hù)數(shù)量,并顯示在所有客戶(hù)端。此功能屬于顯示

6、在線(xiàn)用戶(hù)列表的次要功能。6. 顯示當(dāng)前用戶(hù):用戶(hù)登錄后,輸入的用戶(hù)名會(huì)保存在用戶(hù)名輸入文本域內(nèi),同時(shí)在用戶(hù)列表中以紅色字體顯示當(dāng)前用戶(hù)的用戶(hù)名。如果用戶(hù)同時(shí)開(kāi)啟多個(gè)客戶(hù)端,此功能用于區(qū)分不同的客戶(hù)端。7. 聊天功能:這是聊天室的主要功能,用戶(hù)可以發(fā)送任何文字與聊天室的所有成員聊天,并且接收其他用戶(hù)發(fā)送的消息,類(lèi)似qq群組的功能。8. 退出聊天室:用戶(hù)在想要退出聊天室時(shí)。點(diǎn)擊關(guān)閉按鈕即可突出聊天室。此功能類(lèi)似關(guān)閉連接功能??蛻?hù)端效果效果如下:(界面效果隨系統(tǒng)主題更改)實(shí)現(xiàn)技術(shù)a) 使用serversocket、socket完成服務(wù)端和客戶(hù)端的連接。b) 服務(wù)端使用多線(xiàn)程的方式可以接受多個(gè)客戶(hù)端。

7、c) 使用對(duì)象的方式,在服務(wù)端和客戶(hù)端之間傳送數(shù)據(jù)。問(wèn)題解決辦法d) 服務(wù)端和客戶(hù)端的數(shù)據(jù)通過(guò)什么方式維護(hù)?將這些數(shù)據(jù)封裝成類(lèi),服務(wù)器和客戶(hù)端發(fā)送對(duì)象來(lái)維護(hù)。e) 當(dāng)服務(wù)端強(qiáng)制退出時(shí),應(yīng)該做什么處理?告訴客戶(hù)端服務(wù)端退出,然后關(guān)閉所有到服務(wù)端的連接??蛻?hù)端根據(jù)服務(wù)端退出,斷開(kāi)和服務(wù)端的連接。服務(wù)端效果圖:客戶(hù)端效果圖:群聊通信:設(shè)計(jì)思路:實(shí)現(xiàn)網(wǎng)絡(luò)通信必須建立在tcp/ip協(xié)議的基礎(chǔ)上,致力于實(shí)現(xiàn)應(yīng)用層,傳輸層向應(yīng)用層提供套接字socket接口.socket封裝下層的數(shù)據(jù)傳輸細(xì)節(jié)。應(yīng)用層的程序通過(guò)socket來(lái)建立與遠(yuǎn)程主機(jī)的連接,以及進(jìn)行數(shù)據(jù)傳輸。聊天室程序采用c/s架構(gòu),因此先設(shè)計(jì)圖形界面,

8、將必要的組件布局好,然后測(cè)試在不同計(jì)算機(jī)上的顯示效果,然后更改,確定界面沒(méi)有問(wèn)題后,設(shè)計(jì)程序的邏輯功能等。服務(wù)器端程序點(diǎn)擊啟動(dòng)后顯示一個(gè)服務(wù)器界面,然后在啟動(dòng)服務(wù)器上添加監(jiān)聽(tīng)器,要使服務(wù)器能穩(wěn)定的收發(fā)數(shù)據(jù),采用tcp的傳輸模式,服務(wù)器通過(guò)一直監(jiān)聽(tīng)端口,來(lái)接收客戶(hù)程序的連接請(qǐng)求,在服務(wù)器程序中首先創(chuàng)建一個(gè)serversocket對(duì)象,在構(gòu)造方法中指定監(jiān)聽(tīng)的端口:serversocket=new serversocket(8000);/監(jiān)聽(tīng)8000端口服務(wù)器端口號(hào)使用1025到65535之間的自定義的服務(wù)端口。serversocket的構(gòu)造方法在操作系統(tǒng)中把當(dāng)前進(jìn)程注冊(cè)為服務(wù)器進(jìn)程,服務(wù)器程序調(diào)用

9、serversocket對(duì)象的accept(),方法,通過(guò)該方法一直監(jiān)聽(tīng)端口,等待客戶(hù)端的連接請(qǐng)求,如果接收到一個(gè)連接請(qǐng)求,accept()方法返回一個(gè)socket對(duì)象,這個(gè)socket對(duì)象與客戶(hù)端的socket對(duì)象形成一條通向線(xiàn)路:socket=serversocket.accept();/等待客戶(hù)端的連接請(qǐng)求socket類(lèi)通過(guò)調(diào)用inputstream()和outputstream()方法,返回輸入流inputstream和輸出流outputstream對(duì)象。程序向輸出流寫(xiě)數(shù)據(jù),完成發(fā)送數(shù)據(jù),從輸入流讀數(shù)據(jù),接收來(lái)自對(duì)方的數(shù)據(jù)。outputstream=new objectoutputst

10、ream(socket.getoutputstream();inputstream=new objectinputstream(socket.getinputstream();objectoutputstream繼承自outputstream服務(wù)器啟動(dòng)后就一直監(jiān)聽(tīng)端口等待客戶(hù)端連接,將客戶(hù)端傳過(guò)來(lái)的數(shù)據(jù)封裝成對(duì)象,然后通過(guò)objectoutputstream 將 java 對(duì)象的基本數(shù)據(jù)類(lèi)型寫(xiě)入 outputstream??梢允褂?objectinputstream 讀取(重構(gòu))對(duì)象。通過(guò)使用流則可以在另一臺(tái)主機(jī)上或另一個(gè)進(jìn)程中重構(gòu)對(duì)象??蛻?hù)端財(cái)通同樣的思路先設(shè)計(jì)程序的界面,然后在不同組件中添加監(jiān)聽(tīng)器,客戶(hù)進(jìn)程的端口由所在主機(jī)的操作系統(tǒng)動(dòng)態(tài)分配,當(dāng)客戶(hù)的進(jìn)程要求與一個(gè)服務(wù)器進(jìn)程進(jìn)行連接時(shí)操作系統(tǒng)為客戶(hù)進(jìn)程隨機(jī)分配一個(gè)還未被占用的端口,當(dāng)客戶(hù)進(jìn)程與服務(wù)器斷開(kāi)連接時(shí)這個(gè)端口就被釋放??蛻?hù)啟動(dòng)客戶(hù)端的程序然后輸入用戶(hù)名,先對(duì)用戶(hù)名進(jìn)行校驗(yàn),輸入符合要求后,然后將用戶(hù)名,端口號(hào),主機(jī)地址封裝成對(duì)象,然后調(diào)用socket對(duì)象的方法將數(shù)據(jù)發(fā)送到服務(wù)器上,然后服務(wù)器將用戶(hù)名增加進(jìn)用戶(hù)列表

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論