版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課題內(nèi)容和要求.課題內(nèi)容基于Socket和多線程編程的聊天程序?qū)崿F(xiàn).課題要求網(wǎng)絡(luò)聊天程序設(shè)計(jì)非常復(fù)雜,允許多個(gè)人同時(shí)聊天更加需要多線程技術(shù)的支持,請(qǐng)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的多線程網(wǎng)絡(luò)聊天程序模擬。設(shè)計(jì)思路分析在網(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ò)聊天室,不同地方的人可以在那個(gè)虛擬的聊天室里面熱烈聊天?;谶@樣的想法,我們用JAVA設(shè)計(jì)一個(gè)多人同時(shí)聊天的小程序,用Socket編程實(shí)現(xiàn)網(wǎng)絡(luò)通訊,面向連接的,采用多線程的實(shí)現(xiàn)技術(shù)。在程序中,可以設(shè)置加入連接的最大數(shù)目,通過更改IP地址和端口號(hào),成為不同的客戶端,與服務(wù)器端連接,進(jìn)行多用戶聊天。%為方便用戶交互,我們采用圖形化的用戶界面。實(shí)現(xiàn)了好友添加,消息收發(fā)、顯示等基本功能。概要設(shè)計(jì)該網(wǎng)絡(luò)聊天程序大致分為三個(gè)主要部分:客戶端、服務(wù)器端和用戶圖形界面。各個(gè)部分的初步設(shè)計(jì)思想、流程及存儲(chǔ)結(jié)構(gòu)如下:程序整體框架:主程序監(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ù)器端程序客戶端程序客戶端(Client)客戶端,使用SOcket對(duì)網(wǎng)絡(luò)上某一個(gè)服務(wù)器的某一個(gè)端口發(fā)出連接請(qǐng)求,一旦連接成功,打開會(huì)話;會(huì)話完成后,關(guān)閉SOcket??蛻舳瞬恍枰付ù蜷_的端口,通常臨時(shí)的、動(dòng)態(tài)的分配一個(gè)端口。?服務(wù)器端(SerVer)服務(wù)器端,使用SerVerSOcket監(jiān)聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請(qǐng)求,客戶連接后,會(huì)話產(chǎn)生;在完成會(huì)話后,關(guān)閉連接。用戶圖形界面用戶圖形界面方便程序與用戶的交互,多個(gè)用戶參加,完成會(huì)話功能,具體的設(shè)計(jì)要方便用戶的使用,直觀清晰,簡(jiǎn)潔明了,友好美觀。存儲(chǔ)結(jié)構(gòu)下面列出主要存儲(chǔ)結(jié)構(gòu)或變量:存儲(chǔ)結(jié)構(gòu)、變量、對(duì)象類型*說明postInetAddress標(biāo)識(shí)IP地址Portint標(biāo)識(shí)端口Server[]>ServerThread服務(wù)器端連接數(shù)Client[]Socket客戶端連接數(shù)Client(String ip,intp,Facechat)publicClient類成員函數(shù)!Publicvoidrun()VoidClient、Server類成員函數(shù)Server(intport,Facechat)publicServer類成員函數(shù)Face()Public,Face類成員函數(shù)詳細(xì)設(shè)計(jì)代碼分服務(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ì)話。具體代碼如下:package.*;!import.*;import.*;publicclassServerextendsThread{ServerSocketskt; ");while(true){try{Client[k]=();tart();客戶端“+Client[k].getInetAddress()+"已連線\n");etClient().getOutputStream());i=server[k].getI();k++;}else{etInputStream()));theOutputStream=newPrintStream());?while(true){readin=();+"\n");}}catch(SocketExceptione){"連線中斷!?n");戶端客戶端主要是使用SOcket類,該類是JAVA實(shí)現(xiàn)網(wǎng)絡(luò)編程重要的基礎(chǔ)類,實(shí)現(xiàn)程序間雙向的面向連接的通信。調(diào)用publicSOcket(Stringhost,int「。^)方法設(shè)定IP和端口。建好連接后,用戶通過得到SOcket的輸入輸出流對(duì)象后,利用流的方法實(shí)現(xiàn)數(shù)據(jù)的傳輸。調(diào)用publicInputStreamgetInputStream()和PublicOutputStreamgetOutputStream()方法,分別得到Socket對(duì)象的輸入輸出流;。具體實(shí)現(xiàn)代碼如下:package.*;impOrt.*;impOrtclassClientextendsThread{SOcketskt; 戶圖形界面該部分主要是完成界面的初始化,合理布局組件,方便用戶交互。主要是JAVA按鈕,文本域,標(biāo)簽,布局管理器的使用。主要處理了鍵盤Enter消息接受,下面是實(shí)現(xiàn)代碼:package.*;importclassFaceextendsFrame{)privatestaticfinallongserialVersionUID=1L;ButtonclientBtn,serverBtn;TextAreata;TextFieldtfaddress,tfport,tftype;Labellbl1,lbl2,lbl3;intport;Clientclient;(Serverserver;booleaniamserver;staticFacefrm;publicFace(){-L-'I土JJmlJIWJ蘆HIL與LLtLlXUI=始化界面如下:序運(yùn)行初2.輸入發(fā)送的聊天內(nèi)容后的測(cè)試效果:通過以上測(cè)試分析可知,程序很好地完成了課題的要求,運(yùn)行結(jié)果正確,利用JAVA語言的異常處理機(jī)制很好地處理了各種異常,使得程序的性能變得相對(duì)穩(wěn)定,界面舒適易用,可以滿足基本聊天需要!調(diào)試過程中的問題程序的調(diào)試相對(duì)程序的編碼復(fù)雜多了,需要很大的精力才能做好。.問題的描述JAVA語言的基本知識(shí)已具備,但是SOCket網(wǎng)絡(luò)方面還不是很了解,花了不少工夫。SOCket(套接字),用于描述IP地址和端口,通信鏈的句柄。應(yīng)用程序通常通過它向網(wǎng)絡(luò)發(fā)出或應(yīng)答請(qǐng)求。有SoCket和SerVerSoCket兩個(gè)類,SerVerSOCket用于服務(wù)器端,SOCket是建立網(wǎng)絡(luò)連接時(shí)使用的。在連接成功時(shí),應(yīng)用程序兩端都會(huì)產(chǎn)生一個(gè)SOCket實(shí)例,操作這個(gè)實(shí)例,完成會(huì)話。(2)關(guān)于IP地址的獲取,剛開始不知道通過什么方法解決,后來查書知道JAVA的InetAddress類,可以得到主機(jī)地址。但是我想通過程序自動(dòng)獲取加進(jìn)來的IP地址,可以調(diào)用PUbliCbyte[]getAddress()方法,但是沒能成功,相互的連接也不是很順暢,留待下次解決。.程序改進(jìn)的思考程序只是實(shí)現(xiàn)了簡(jiǎn)單的收發(fā)消息功能,功能比較單一,還有許多改進(jìn)提升的地方。(1)增加登錄界面,用戶通過號(hào)碼和口令進(jìn)入系統(tǒng),對(duì)用戶身份進(jìn)行驗(yàn)證增加系統(tǒng)的安全性。(2)可以考慮保存聊天記錄功能,方便用戶查看。(3)界面美化方面比較欠缺,可以更加友好和美觀。專業(yè)課程設(shè)計(jì)總結(jié)第一周的專業(yè)課程設(shè)計(jì)結(jié)束了,這是一個(gè)不斷學(xué)習(xí)的過程,給我留下了太多的東西。課題是基于SOCket和多線程的聊天程序,我的第一選擇就是JAVA語言,因?yàn)椴还苁窃诰W(wǎng)絡(luò)應(yīng)用方面還是在多線程支持方面,JAVA都有很大的便利和優(yōu)勢(shì)。同時(shí),我也體會(huì)到了開發(fā)工具的強(qiáng)大功能。進(jìn)一步理解了面向?qū)ο蟮乃枷?。由于JAVA是面向?qū)ο蟮恼Z言,主要的特征就是封裝,寫類。在該課題中,很容易就分成三個(gè)類,SerVer類、Client類和FaCe類,這樣分工明確,幾個(gè)類可以單獨(dú)寫。再實(shí)例化類對(duì)象,完成必要的操作。其中SerVer類和Client類都是繼承Thread類,F(xiàn)aCe類繼承Frame類,實(shí)現(xiàn)代碼復(fù)用。每次都會(huì)談到程序調(diào)試問題,這是個(gè)比較重要的問題,我覺得起初就要用工程的思想,從整體上考慮問題,這樣調(diào)試起來相對(duì)簡(jiǎn)單??傊?,這要靠不斷實(shí)踐來提高。類似這樣的實(shí)踐都是不斷學(xué)習(xí)的過程,其中肯定會(huì)碰到問題,比如這次的JAVA輸入輸出流問題,不是容易
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 17954-2025工業(yè)鍋爐經(jīng)濟(jì)運(yùn)行
- 2025年中職鐵道運(yùn)輸服務(wù)(鐵路客運(yùn)服務(wù))試題及答案
- 2025年高職新能源汽車結(jié)構(gòu)原理(汽車構(gòu)造分析)試題及答案
- 2025年中職(廣告產(chǎn)品銷售)宣傳效果階段測(cè)試卷
- 2025年高職生態(tài)保護(hù)運(yùn)營(yíng)應(yīng)用(應(yīng)用技術(shù))試題及答案
- 2025年高職(大數(shù)據(jù)與會(huì)計(jì))財(cái)務(wù)共享服務(wù)期末測(cè)試題及答案
- 2025年大學(xué)大三(財(cái)政學(xué))稅收籌劃階段測(cè)試題及答案
- 2025年高職(西餐工藝)牛排制作試題及答案
- 2025年中職倫理學(xué)(道德理論)試題及答案
- 2025年中職無人機(jī)應(yīng)用技術(shù)(無人機(jī)操作)技能測(cè)試題
- 店鋪污水排放整改通知書
- 2024-2025學(xué)年安徽省安慶市安慶四中九年級(jí)上學(xué)期1月份期末英語考試試題
- 磁懸浮柔性傳輸行業(yè)研究報(bào)告 2024
- 2025年腎臟內(nèi)科實(shí)際操作技能綜合考核答案及解析
- 車間落地品管理辦法
- 2.2氣候課件-八年級(jí)地理上學(xué)期人教版
- 知道智慧樹醫(yī)療糾紛的防范與處理滿分測(cè)試答案
- 接處警培訓(xùn)課件
- 小區(qū)道閘廣告合同(標(biāo)準(zhǔn)版)
- 2025年山西鐵道單招試題及答案
- DB42T 831-2012 鉆孔灌注樁施工技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論