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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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)目。可以使用多種編程語言設(shè)計(jì)和開發(fā)出功能完善的網(wǎng)絡(luò)聊天室。本系統(tǒng)采用c/s架構(gòu)設(shè)計(jì),用java語言設(shè)計(jì)和實(shí)現(xiàn),整個(gè)項(xiàng)目分為服務(wù)器端和客戶端。使用了最新的java se標(biāo)準(zhǔn)swing組件,開發(fā)出簡(jiǎn)潔美觀布局合理的客戶端和服務(wù)器界面;利用socket網(wǎng)絡(luò)開發(fā)技術(shù)實(shí)現(xiàn)客戶端和服務(wù)器端的連接訪問,實(shí)現(xiàn)網(wǎng)絡(luò)通信功能;通過對(duì)數(shù)據(jù)流合理的封裝,實(shí)現(xiàn)信息發(fā)送和接受。同時(shí),采用多線程、多任務(wù)

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

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

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

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

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

7、c) 使用對(duì)象的方式,在服務(wù)端和客戶端之間傳送數(shù)據(jù)。問題解決辦法d) 服務(wù)端和客戶端的數(shù)據(jù)通過什么方式維護(hù)?將這些數(shù)據(jù)封裝成類,服務(wù)器和客戶端發(fā)送對(duì)象來維護(hù)。e) 當(dāng)服務(wù)端強(qiáng)制退出時(shí),應(yīng)該做什么處理?告訴客戶端服務(wù)端退出,然后關(guān)閉所有到服務(wù)端的連接??蛻舳烁鶕?jù)服務(wù)端退出,斷開和服務(wù)端的連接。服務(wù)端效果圖:客戶端效果圖:群聊通信:設(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)用層的程序通過socket來建立與遠(yuǎn)程主機(jī)的連接,以及進(jìn)行數(shù)據(jù)傳輸。聊天室程序采用c/s架構(gòu),因此先設(shè)計(jì)圖形界面,

8、將必要的組件布局好,然后測(cè)試在不同計(jì)算機(jī)上的顯示效果,然后更改,確定界面沒有問題后,設(shè)計(jì)程序的邏輯功能等。服務(wù)器端程序點(diǎn)擊啟動(dòng)后顯示一個(gè)服務(wù)器界面,然后在啟動(dòng)服務(wù)器上添加監(jiān)聽器,要使服務(wù)器能穩(wěn)定的收發(fā)數(shù)據(jù),采用tcp的傳輸模式,服務(wù)器通過一直監(jiān)聽端口,來接收客戶程序的連接請(qǐng)求,在服務(wù)器程序中首先創(chuàng)建一個(gè)serversocket對(duì)象,在構(gòu)造方法中指定監(jiān)聽的端口:serversocket=new serversocket(8000);/監(jiān)聽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(),方法,通過該方法一直監(jiān)聽端口,等待客戶端的連接請(qǐng)求,如果接收到一個(gè)連接請(qǐng)求,accept()方法返回一個(gè)socket對(duì)象,這個(gè)socket對(duì)象與客戶端的socket對(duì)象形成一條通向線路:socket=serversocket.accept();/等待客戶端的連接請(qǐng)求socket類通過調(diào)用inputstream()和outputstream()方法,返回輸入流inputstream和輸出流outputstream對(duì)象。程序向輸出流寫數(shù)據(jù),完成發(fā)送數(shù)據(jù),從輸入流讀數(shù)據(jù),接收來自對(duì)方的數(shù)據(jù)。outputstream=new objectoutputst

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論