




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Java 聊天室的設計與實現(xiàn)學 院:計算機學院專 業(yè):班 級:學 號:姓 名:秦向紅指導老師:2014年11月1. 設計背景12. 設計環(huán)境13. 設計目的14. Socket介紹15. Socket的通信機制圖:36.程序的設計46.1服務器的設計46.2客戶端的設計77. 測試及運行結果107.1服務器的測試107.2客戶端的測試108.設計總結139. 參考文獻1310.附代碼1410.1服務器代碼1410.2客戶端的設計17Java 聊天室的設計與實現(xiàn)1. 設計背景在互聯(lián)網(wǎng)如此發(fā)達的今天,即時通信工具已經(jīng)成為我們如常生活中必不可少的一部分。人們對網(wǎng)絡的依賴越來越多,越來越離不開網(wǎng)絡,而
2、由此產(chǎn)生的聊天工具也越來越多,類似有QQ、MSN、微信等,網(wǎng)絡聊天使網(wǎng)絡聊天系統(tǒng)發(fā)展的日新月異,由此產(chǎn)生制作了一個簡單的聊天功能的網(wǎng)絡聊天程序,由此此設計我還可以更好的學習網(wǎng)絡軟件的編程知識。Java語言是當今流行的網(wǎng)絡編程語言,它具有面向對象,與平臺無關,安全,多線程等特點。使用java語言不僅可以實現(xiàn)大型企業(yè)級的分布式應用系統(tǒng),還能夠為小型的的,嵌入式設備進行應用程序的開發(fā)。面向對象的開發(fā)是當今世界最流行的開發(fā)方法,它不僅具有更貼近自然地語義,而且有利于軟件的維護和繼承。此次設計的題目為聊天室,可以鞏固所學的java語言基礎知識,增進java語言的編輯基本功,拓寬常用類庫的應用,使我們通過
3、教學環(huán)節(jié)與手段,把所學的課程及相關知識加以融會貫通,全面理解網(wǎng)絡編程的含義。2. 設計環(huán)境操作系統(tǒng):Window 8CPU:1.80GHz 內存:4.00GB硬盤空間:80G開發(fā)工具:JDK1.5、Eclipse3. 設計目的聊天室雖然程序簡單,但是在設計與實現(xiàn)的過程中能夠充分學到基于Socket的網(wǎng)絡編程的技術,使我掌握網(wǎng)絡編程的服務的技術,能夠充分利用我近期學到的java編程語言。實現(xiàn)聊天功能Client/Server的面向連接的編程技術。使用多線程進行多個客戶端和服務器的連接,實現(xiàn)數(shù)據(jù)的讀取與輸入。實現(xiàn)網(wǎng)絡聊天系統(tǒng)的設計與實現(xiàn),讓我們掌握網(wǎng)絡編程的服務的技術,讓同學們更加深刻的了解,掌握
4、這方面的知識4. Socket介紹Socket的英文原義是“孔”或“插座”。作為BSD UNIX的進程通信機制,取后一種意思。通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄。在Internet上的主機一般運行了多個服務軟件,同時提供幾種服務。每種服務都打開一個Socket,并綁定到一個端口上,不同的端口對應于不同的服務。Socket非常類似于電話插座。在這里,我以一個國家級電話網(wǎng)為例更加清楚的講解一下Socket。電話的通話雙方相當于相互通信的2個進程,區(qū)號是它的網(wǎng)絡地址;區(qū)內一個單位的交換機相當于一臺主機,主機分配給每個用戶的局內號碼相當于Socket號
5、。任何用戶在通話之前,首先要占有一部電話機,相當于申請一個Socket;同時要知道對方的號碼,相當于對方有一個固定的Socket。然后向對方撥號呼叫,相當于發(fā)出連接請求(假如對方不在同一區(qū)內,還要撥對方區(qū)號,相當于給出網(wǎng)絡地址)。假如對方在場并空閑(相當于通信的另一主機開機且可以接受連接請求),拿起電話話筒,雙方就可以正式通話,相當于連接成功。雙方通話的過程,是一方向電話機發(fā)出信號和對方從電話機接收信號的過程,相當于向Socket發(fā)送數(shù)據(jù)和從socket接收數(shù)據(jù)。通話結束后,一方掛起電話機相當于關閉Socket,撤消連接。在電話系統(tǒng)中,一般用戶只能感受到本地電話機和對方電話號碼的存在,建立通話
6、的過程,話音傳輸?shù)倪^程以及整個電話系統(tǒng)的技術細節(jié)對他都是透明的,這也與Socket機制非常相似。Socket利用網(wǎng)間網(wǎng)通信設施實現(xiàn)進程通信,但它對通信設施的細節(jié)毫不關心,只要通信設施能提供足夠的通信能力,它就滿足了。抽象出來,Socket實質上提供了進程通信的端點。進程通信之前,雙方首先必須各自創(chuàng)建一個端點,否則是沒有辦法建立聯(lián)系并相互通信的。正如打電話之前,雙方必須各自擁有一臺電話機一樣。在網(wǎng)間網(wǎng)內部,每一個Socket用一個半相關描述:(協(xié)議,本地地址,本地端口)。一個完整的Socket有一個本地唯一的Socket號,由操作系統(tǒng)分配。最重要的是,Socket是面向客戶/服務器模型而設計的,
7、針對客戶和服務器程序提供不同的Socket系統(tǒng)調用。客戶隨機申請一個Socket(相當于一個想打電話的人可以在任何一臺入網(wǎng)電話上撥號呼叫),系統(tǒng)為之分配一個Socket號;服務器擁有全局公認的Socket,任何客戶都可以向它發(fā)出連接請求和信息請求(相當于一個被呼叫的電話擁有一個呼叫方知道的電話號碼)。Socket利用客戶/服務器模式巧妙地解決了進程之間建立通信連接的問題。服務器Socket半相關為全局所公認非常重要。根據(jù)傳輸數(shù)據(jù)類型的不同,Socket主要分為三類:流式Socket(SOCKSTREAM),在這種方式下,兩個通訊的應用程序之間要先建立一種虛擬連 接,提供可靠的、面向連接的通信流
8、,它使用TCP協(xié) 議,從而保證了數(shù)據(jù)傳輸?shù)恼_性和有序性。數(shù)據(jù)報Socket(SOCKDGRAM),它使用數(shù)據(jù)報協(xié)議UDP,定義了一種無連接服務,數(shù)據(jù)通過相互獨立的 報文進行傳輸,是無序的,并且不保證可靠、無差錯。原始Socket,原始套接字允許對底層協(xié)議如IP或 ICMP直接訪問,它功能強大但使用較為不便。主要用于一些協(xié)議的開發(fā)。5. Socket的通信機制圖:TCP服務器端創(chuàng)建對象:Socket()結束連接回應數(shù)據(jù)請求數(shù)據(jù)發(fā)送連接請求Connect()TCP客戶端接受服務的返回結果Read()關閉Close()向服務器發(fā)出服務請求Write()創(chuàng)建對象Socket()指定端口號:Bind(
9、)監(jiān)聽客戶端的連接請求:Listen()阻塞等待連接的建立:Accept()建立連接接受客戶端的請求消息Read()處理客戶端的請求消息Write()處理結果返回給客戶端Read()關閉Close()6.程序的設計6.1服務器的設計1.新建一個Java項目用來實現(xiàn)服務器的設計2. 服務器主函數(shù)的創(chuàng)建,使用類TestServerSocket3023.創(chuàng)建服務器的監(jiān)聽事件,使用類ServerListener024. 在服務器的監(jiān)聽事件中,主要指定服務器的端口號以及重寫父類的run函數(shù)開啟新的線程5. 創(chuàng)建基于Socket通信的線程,使用類ChatSocket3026. 在創(chuàng)建基于Socket通信的
10、線程中,主要定義一個Socket變量7. 然后在定義兩個函數(shù),一個用于處理數(shù)據(jù)的輸入。8. 另一個用于處理數(shù)據(jù)的輸出9. 實現(xiàn)服務器對客戶端進行的管理,使用類ChatManager30210. 實現(xiàn)服務器與客戶端的連通中,重要的一點就是對類進行單例化處理,以為不是任何人都可以隨便創(chuàng)建此類(即服務器)的,別人只可以連接服務器,而不可以進行創(chuàng)建。11. 另外還設計的函數(shù)有添加客戶端,移除客戶端,以及對客戶端的數(shù)據(jù)進行轉發(fā)6.2客戶端的設計1. 首先新建一個java項目,實現(xiàn)客戶端的一些設計2. 新建兩個包,一個用于實現(xiàn)功能,另一個用于實現(xiàn)聊天的界面設計3. 界面的設計首先需要新建一個JFrame,
11、命名為MainView4. 新建框架之后需要,需要為其添加編輯框,按鈕,顯示文本等的控件,添加之后還要為其布局,布局之后顯示如下:5.添加主函數(shù),命名為TestClient3026.添加對客戶端的數(shù)據(jù)處理功能,創(chuàng)建類ChatManager3027. 與服務器的創(chuàng)建一樣,需要對客戶端進行單例化處理,只有本類自己可以創(chuàng)建客戶端,別人不可以隨便創(chuàng)建8. 另外有對服務器發(fā)送的連接請求函數(shù)9. 對發(fā)送按鈕的響應函數(shù)7. 測試及運行結果7.1服務器的測試1. 運行服務器,查看顯示結果2. 測試服務器綁定的端口號(24302)。打開瀏覽器,輸入127.0.0.1:243027.2客戶端的測試1. 運行客戶端
12、程序,并新建客戶端2. 客戶端連接服務器3. 當點擊“確定”后,在客戶端的顯示框中,會顯示“連接服務器的消息”4. 創(chuàng)建多個客戶端,連接服務器進行聊天客戶端1:客戶端2:8.設計總結基于孫老師講的Socket的網(wǎng)絡聊天系統(tǒng)的設計(C+編寫版),由于近期我一直在鉆研java編程語言,于是我就做了一個用java語言編寫的基于Socket的網(wǎng)絡聊天程序的設計。通過本次設計我又進一步對基于Socket的網(wǎng)絡聊天有了新的了解,而且本次通過我自己獨立設計程序,編寫程序,使我對Client/ Server結構軟件的設計有了新的認識。對網(wǎng)絡編程有了進一步的了解。在設計的過程中了解到自己的知識還是比較有限,使得程序還不夠完善?;仡櫞舜蜫ava程序的編寫。從理論到實踐,可以學到很多東西,同時不僅可以鞏固以前學的東西,而且學到了很多課本上學不到的東西,通過本次設計,使得自己懂得必須要把理論和實踐相結合起來,從理論中得出結論,才能真正掌握這門技術,也提高了自己獨立思考的能力,在設計的過程中,可以自己解決。真正體會到要將一門知識學到可以自己運用,才是屬于自己的,因此我必須加強實踐,多練習。本次設計還有很多不足與缺陷,程序中還有很多問題需要完善。比如,服務器要記錄客戶端的聊天內
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度幼兒園幼兒安全協(xié)議書與校園安全管理培訓協(xié)議
- 2025年度手房屋買賣合同包括稅費承擔及繳納明細
- Unit 1 developing ideas reading for writing 教學設計-2024-2025學年外研版(2024)七年級英語下冊
- 《別了“不列顛尼亞”》《縣委書記的榜樣-焦裕祿》聯(lián)讀教學設計 2024-2025學年統(tǒng)編版高中語文選擇性必修上冊
- 2025年汽車空氣過濾器項目合作計劃書
- 2025年麥角固醇及其衍生物維生素D項目合作計劃書
- 2025年電子行李秤合作協(xié)議書
- 發(fā)酵法生產(chǎn)維生素及Β-胡蘿卜素項目績效評估報告
- 不同肥料對水稻土溫室氣體排放的影響
- 創(chuàng)辦企業(yè)的流程圖
- 2025年小學督導工作計劃
- 2024-2025學年部編版歷史九年級上冊期末復習練習題(含答案)
- 礦山工程安全培訓課件
- 基于ChatGPT的ESG評級體系實現(xiàn)機制研究
- 2024年精對苯二甲酸市場分析報告
- 成人手術后疼痛評估與護理團體標準
- 2025年中考數(shù)學二輪專題復習 題型四-二次函數(shù)圖象與性質綜合題
- 春節(jié)申遺成功的意義
- 上海市黃浦區(qū)2022-2023學年九年級上學期期末化學試卷(一模)
- 子女放棄繼承房產(chǎn)協(xié)議書
- 施工方案與技術措施合理性、科學性與可行性
評論
0/150
提交評論