Socket和多線程編程的聊天程序?qū)崿F(xiàn).docx

Socket和多線程編程的聊天程序?qū)崿F(xiàn).docx

ID:58676312

大?。?6.42 KB

頁數(shù):11頁

時(shí)間:2020-10-15

Socket和多線程編程的聊天程序?qū)崿F(xiàn).docx_第1頁
Socket和多線程編程的聊天程序?qū)崿F(xiàn).docx_第2頁
Socket和多線程編程的聊天程序?qū)崿F(xiàn).docx_第3頁
Socket和多線程編程的聊天程序?qū)崿F(xiàn).docx_第4頁
Socket和多線程編程的聊天程序?qū)崿F(xiàn).docx_第5頁
資源描述:

《Socket和多線程編程的聊天程序?qū)崿F(xiàn).docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、一、???????課題內(nèi)容和要求1.課題內(nèi)容基于Socket和多線程編程的聊天程序?qū)崿F(xiàn)2.課題要求網(wǎng)絡(luò)聊天程序設(shè)計(jì)非常復(fù)雜,允許多個(gè)人同時(shí)聊天更加需要多線程技術(shù)的支持,請(qǐng)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的多線程網(wǎng)絡(luò)聊天程序模擬。二、???????設(shè)計(jì)思路分析1.???在網(wǎng)絡(luò)越來越發(fā)達(dá)的今天,人們對(duì)網(wǎng)絡(luò)的依賴越來越強(qiáng),網(wǎng)絡(luò)聊天已經(jīng)成了許多人生活中必不可少的一部分,基于這樣的需求,出現(xiàn)了許多網(wǎng)絡(luò)聊天通信工具,像QQ,MSN等等,但是人們已經(jīng)不再滿足于單一的兩個(gè)人之間的聊天,而是對(duì)多人同時(shí)聊天產(chǎn)生了興趣,于是出現(xiàn)了網(wǎng)絡(luò)聊天

2、室,不同地方的人可以在那個(gè)虛擬的聊天室里面熱烈聊天。基于這樣的想法,我們用JAVA設(shè)計(jì)一個(gè)多人同時(shí)聊天的小程序,用Socket編程實(shí)現(xiàn)網(wǎng)絡(luò)通訊,面向連接的,采用多線程的實(shí)現(xiàn)技術(shù)。2.???在程序中,可以設(shè)置加入連接的最大數(shù)目,通過更改IP地址和端口號(hào),成為不同的客戶端,與服務(wù)器端連接,進(jìn)行多用戶聊天。3.???為方便用戶交互,我們采用圖形化的用戶界面。實(shí)現(xiàn)了好友添加,消息收發(fā)、顯示等基本功能。三、???????概要設(shè)計(jì)該網(wǎng)絡(luò)聊天程序大致分為三個(gè)主要部分:客戶端、服務(wù)器端和用戶圖形界面。各個(gè)部分的初

3、步設(shè)計(jì)思想、流程及存儲(chǔ)結(jié)構(gòu)如下:1.???程序整體框架:主程序監(jiān)聽一端口,等待客戶接入;同時(shí)構(gòu)造一個(gè)線程類,準(zhǔn)備接管會(huì)話。當(dāng)一個(gè)Socket會(huì)話產(chǎn)生后,將這個(gè)會(huì)話交給線程處理,然后主程序繼續(xù)監(jiān)聽。?打開Socket命名監(jiān)聽端口建立連接收發(fā)消息關(guān)閉連接打開Socket?連接服務(wù)器收發(fā)消息關(guān)閉連接服務(wù)器端程序客戶端程序?2.???客戶端(Client)客戶端,使用Socket對(duì)網(wǎng)絡(luò)上某一個(gè)服務(wù)器的某一個(gè)端口發(fā)出連接請(qǐng)求,一旦連接成功,打開會(huì)話;會(huì)話完成后,關(guān)閉Socket??蛻舳瞬恍枰付ù蜷_的端口,

4、通常臨時(shí)的、動(dòng)態(tài)的分配一個(gè)端口。3.???服務(wù)器端(Server)服務(wù)器端,使用ServerSocket監(jiān)聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請(qǐng)求,客戶連接后,會(huì)話產(chǎn)生;在完成會(huì)話后,關(guān)閉連接。4.???用戶圖形界面用戶圖形界面方便程序與用戶的交互,多個(gè)用戶參加,完成會(huì)話功能,具體的設(shè)計(jì)要方便用戶的使用,直觀清晰,簡(jiǎn)潔明了,友好美觀。5.???存儲(chǔ)結(jié)構(gòu)下面列出主要存儲(chǔ)結(jié)構(gòu)或變量:存儲(chǔ)結(jié)

5、構(gòu)、變量、對(duì)象類型說明postInetAddress標(biāo)識(shí)IP地址Portint標(biāo)識(shí)端口Server[]ServerThread服務(wù)器端連接數(shù)Client[]Socket客戶端連接數(shù)Client(Stringip,intp,Facechat)publicClient類成員函數(shù)Publicvoidrun()VoidClient、Server類成員函數(shù)Server(intport,Facechat)publicServer類成員函數(shù)Face()PublicFace類成員函數(shù)?四、???????詳細(xì)設(shè)計(jì)?

6、??代碼分服務(wù)器端、客戶端、和用戶圖形界面三部分,分別如下:1.服務(wù)器端服務(wù)器端主要是使用ServerSocket類,相當(dāng)于服務(wù)器Socket,用來監(jiān)聽試圖進(jìn)入的連接,當(dāng)新的連接建立后,該類為他們實(shí)例化一個(gè)Socket對(duì)象,同時(shí)得到輸入輸出流,調(diào)用相應(yīng)方法完成會(huì)話。具體代碼如下:packagenupt.java.socket;importjava.awt.*;importjava.net.*;importjava.io.*;publicclassServerextendsThread{Server

7、Socketskt;??//ServerSocket類監(jiān)聽進(jìn)入的連接,為每個(gè)新的連接產(chǎn)生一個(gè)Socket對(duì)象?????????SocketClient[]=newSocket[10];???SocketClient1=null;???inti=0;???TextAreain;???intport,k=0,l=0;???PrintStreamtheOutputStream;???Facechat;???publicServer(intport,Facechat){???????try{???????

8、????this.port=port;???????????skt=newServerSocket(port);???????????this.chat=chat;???????}catch(IOExceptione){???????????chat.ta.append(e.toString());???????}???}???publicvoidrun(){???????chat.ta.append("等待連線......");???????while(true){???????

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。