版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGEPAGE141課程設(shè)計說明書課程名稱:Windows網(wǎng)絡(luò)編程設(shè)計題目:基于JAVA網(wǎng)絡(luò)聊天室設(shè)計學(xué)院:計算機科學(xué)與信息工程學(xué)院專業(yè)班級:網(wǎng)絡(luò)工程12級指導(dǎo)教師:小組成員:2015年6月目錄摘要 1引言: 11.需求分析 11.1需求分析 11.2系統(tǒng)簡介 22.系統(tǒng)開發(fā)技術(shù) 22.1JAVA網(wǎng)絡(luò)編程技術(shù) 22.2Socket套接字 32.3TCP三次握手 33.系統(tǒng)總框圖與功能分析 43.1系統(tǒng)總框圖 43.2系統(tǒng)功能模塊分析 54.系統(tǒng)模塊代碼設(shè)計與分析 64.1系統(tǒng)流程分析 64.2類的設(shè)計與分析 74.3客戶端模塊部分代碼 74.4服務(wù)器端模塊部分代碼: 95.系統(tǒng)測試 116.總結(jié) 137.成員分工 13參考文獻: 14網(wǎng)絡(luò)聊天室摘要:隨著我國經(jīng)濟發(fā)展和網(wǎng)絡(luò)的普及,網(wǎng)絡(luò)技術(shù)也越來越多地被應(yīng)用于日常工作之中。在程序設(shè)計領(lǐng)域,面向?qū)ο蟮木幊碳夹g(shù)正在逐步代替面向過程的程序設(shè)計技術(shù),成為計算機應(yīng)用設(shè)計開發(fā)的主流,對于人與人之間通過網(wǎng)絡(luò)的溝通和交流,聊天室是人們最常見、最直接的交流的方式。本聊天系統(tǒng)以聊天交流為主,為廣大用戶提供一個借助網(wǎng)絡(luò)進行人際交往的平臺,也是網(wǎng)絡(luò)與現(xiàn)實最貼近的實用型應(yīng)用。本文所介紹的網(wǎng)絡(luò)聊天系統(tǒng)是基于JAVA應(yīng)用程序開發(fā)設(shè)計的,其主要特性是簡單、面向?qū)ο蟆⒎植际?、解釋?zhí)行、安全、體系結(jié)構(gòu)中立、可移植、高性能、多線程以及動態(tài)性。關(guān)鍵詞:局域網(wǎng)、聊天室、JAVA、Socket、WindowsSocket引言:目前,基于TCP/IP協(xié)議的網(wǎng)絡(luò)得到了普及和飛速的發(fā)展,Windows下的網(wǎng)絡(luò)程序越來越顯得重要。利用TCP/IP協(xié)議提供的編程接口———Socket(套接字)可以開發(fā)出TCP/IP應(yīng)用程序。正確的使用WindowsSocket,就可使得不同地址下的進程得以在Windows環(huán)境下順利進行各種網(wǎng)絡(luò)通信,因此研究WinSock更有意義。而基于TCP/IP協(xié)議網(wǎng)絡(luò)環(huán)境下的應(yīng)用程序是通過客戶機/服務(wù)器(C/S)作用方式模式在網(wǎng)絡(luò)(應(yīng)用)編程界面實現(xiàn)的。本次實驗采用java語言設(shè)計一個基于C/S模式的TCP網(wǎng)絡(luò)通訊程序。實現(xiàn)客戶端與服務(wù)器端之間的數(shù)據(jù)傳輸。1.需求分析1.1需求分析根據(jù)當(dāng)前網(wǎng)絡(luò)的需求,網(wǎng)絡(luò)聊天越來越受到各種網(wǎng)民所青睞。因此開發(fā)網(wǎng)絡(luò)聊天是相當(dāng)有必要,而且在網(wǎng)站內(nèi)增加聊天功能,它不僅可以提高網(wǎng)站的訪問量,同時可以留著訪客,更重要的是讓訪客透過聊天室實時的互相交流。而小組成員也都學(xué)習(xí)過JAVA語言,對網(wǎng)絡(luò)編程也較有興趣,為了更好的考驗自己對JAVA語言的掌握程度,小組成員一致決定以《基于JAVA的網(wǎng)絡(luò)聊天室》為課程設(shè)計,希望通過這一次能進一步提高我們的網(wǎng)絡(luò)開發(fā)編程的能力。1.2系統(tǒng)簡介聊天系統(tǒng)不外乎兩個方面,服務(wù)器端和客戶端。這里簡要分析一下兩個方面所要完成的任務(wù):服務(wù)器端的任務(wù):1、服務(wù)器端應(yīng)當(dāng)建立一個ServerSocket,并且不斷進行偵聽是否有客戶端連接或者斷開連接。
2、服務(wù)器端應(yīng)當(dāng)是一個信息發(fā)送中心,所有客戶端的信息都傳到服務(wù)器端,由服務(wù)器端根據(jù)要求分發(fā)信息??蛻舳说娜蝿?wù):1、與服務(wù)器端建立通信通道,向服務(wù)器端發(fā)送信息。
2、接收來自服務(wù)器的信息。系統(tǒng)開發(fā)技術(shù)2.1JAVA網(wǎng)絡(luò)編程技術(shù)JAVA豐富的類庫提供了大量的類以滿足網(wǎng)絡(luò)化、多線程、面向?qū)ο笙到y(tǒng)的需要。語言包提供的支持包括字符串處理、多線程處理、數(shù)學(xué)函數(shù)處理等,可以用它簡單地實現(xiàn)JAVA程序的運行平臺。實用程序包提供的支持包括哈希表、堆棧、可變數(shù)組、時間和日期等。輸入輸出包用統(tǒng)一的"流"模型來實現(xiàn)所有格式的I/O,包括文件系統(tǒng)、網(wǎng)絡(luò)、輸入低級網(wǎng)絡(luò)包用于實現(xiàn)Socket編程。抽象圖形用戶接口包實現(xiàn)了不同平臺的計算機的圖形用戶接口部件,包括窗口、菜單、滾動條、對話框等,使得JAVA可以移植到不同平臺的機器。網(wǎng)絡(luò)包支持Internet的TCP/IP協(xié)議,提供了與Internet的接口。它支持URL連接,WWW的即時訪問,并且簡化了用戶/服務(wù)器模型的程序設(shè)計。2.2Socket套接字Socket,簡稱套接字,用于實現(xiàn)網(wǎng)絡(luò)上客戶和服務(wù)器之間的連接。具體的說:一個服務(wù)器應(yīng)用程序一般偵聽一個特定的端口等待客戶端的連接請求,當(dāng)一個連接請求到達時,客戶端和服武器端建立一個通信連接,在連接過程中,客戶端被分配一個本地端口與一個Socket建立連接,客戶端通過寫Socket來通知服務(wù)器,以讀Socket中的信息,類似的服務(wù)器也獲得一個本地端口,它需要一個新的端口號來偵聽原始端口上的其他連接請求。服務(wù)器也通過它的本地端口連接一個Socket,通過讀寫和客戶端通信。Socket程序的工作過程:1.建立Socket連接:在通信開始之前由通信雙方確認身份,建立一條專用的虛擬連接道。2.數(shù)據(jù)通信:利用虛擬連接通道傳送數(shù)據(jù)信息進行通信。3.關(guān)閉:通信結(jié)束時,再將所建的虛擬連接拆除。具體如下:1服務(wù)器serversocket1服務(wù)器serversocket2監(jiān)聽4.連接5讀6寫7關(guān)閉3客戶端socket6讀5寫7關(guān)閉圖1Socket套接字的建立與連接2.3TCP三次握手第一次握手:原主機發(fā)送一個帶有本次連接的序號的請求的一個數(shù)據(jù)幀第二次握手:目的主機收到請求后,如果同意連接,則發(fā)回一個帶有一個本次連接序號和源端機連接序列號的確認。第三此握手:源端機收到含有兩次初始序列號的應(yīng)答后,再向目的主機發(fā)送一個帶有兩次連接的序列號的確認。系統(tǒng)總框圖與功能分析3.1系統(tǒng)總框圖圖2聊天系統(tǒng)框架圖3.2系統(tǒng)功能模塊分析圖3系統(tǒng)功能圖客戶端:啟動連接:默認連接IP為,端口為1228。聊天:用戶可以給所有人發(fā)送信息,并能看到其他用戶發(fā)送給自己或所有人的消息。斷開連接:與服務(wù)器斷開連接,無法發(fā)送與接收信息。服務(wù)器端:啟動服務(wù):綁定套接字,處于等待連接的狀態(tài),實時監(jiān)控網(wǎng)絡(luò)狀態(tài)。偵聽客戶端:服務(wù)器端套接字一旦監(jiān)聽到客戶端套接字的連接請求,它就響應(yīng)客戶端套接字的請求,一旦客戶端確認了此描述,連接就建立好了。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請求斷開連接:與客戶端斷開連接,無法偵聽連接客戶端。系統(tǒng)模塊代碼設(shè)計與分析4.1系統(tǒng)流程分析客戶端:用服務(wù)器的IP地址和端口號實例化Socket對象。調(diào)用connect方法,連接到服務(wù)器上。將發(fā)送到服務(wù)器的IO流填充到IO對象里,比如BufferedReader/PrintWriter。利用Socket提供的getInputStream和getOutputStream方法,通過IO流對象,向服務(wù)器發(fā)送數(shù)據(jù)流。通訊完成后,關(guān)閉打開的IO對象和Socket。服務(wù)器端:在服務(wù)器,用一個端口來實例化一個ServerSocket對象。此時,服務(wù)器就可以這個端口時刻監(jiān)聽從客戶端發(fā)來的連接請求。調(diào)用ServerSocket的accept方法,開始監(jiān)聽連接從端口上發(fā)來的連接請求。利用accept方法返回的客戶端的Socket對象,進行讀寫IO的操作。通訊完成后,關(guān)閉打開的流和Socket對象4.2類的設(shè)計與分析ServerUI類:服務(wù)器端界面類,主要負責(zé)服務(wù)器端的界面設(shè)計Server類:此類負責(zé)創(chuàng)建綁定到指定服務(wù)器端口號的套接字,等待客戶端連接ListenerClient類:此類負責(zé)偵聽客戶端發(fā)送信息并將信息廣播出去ClientUI類:客戶端界面類,主要負責(zé)客戶端的界面設(shè)計ClientThread類:此類創(chuàng)建連接到服務(wù)器端的套接字,讀取輸入內(nèi)容并發(fā)送4.3客戶端模塊部分代碼客戶端界面部分:publicClientUI(){super("客戶端");//創(chuàng)建ClientUI類的對象btStart=newJButton("啟動連接");//啟動連接按鈕btSend=newJButton("發(fā)送信息");//發(fā)送信息按鈕tfSend=newJTextField(10);//構(gòu)造一個列數(shù)為10的空TextFieldtfIP=newJTextField(10);tfPost=newJTextField(5);taShow=newJTextArea();//創(chuàng)建一個空的文本區(qū)域/*創(chuàng)建“啟動連接”按鈕的監(jiān)聽器對象,監(jiān)聽按鈕發(fā)生的動作;*如果“啟動連接”按鈕被按下,則將創(chuàng)建的ClientUI的對象作為參數(shù)傳遞給ClientThread類**/btStart.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){//構(gòu)造匿名內(nèi)部類來實現(xiàn)接口ActionListenerserver=newClientThread(ClientUI.this);}});/*創(chuàng)建“發(fā)送信息”按鈕的監(jiān)聽器對象,監(jiān)聽按鈕發(fā)生的動作;*如果“發(fā)送信息”按鈕被按下,則將獲取用戶輸入到文本框內(nèi)的內(nèi)容**/btSend.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){server.sendMsg(tfSend.getText());tfSend.setText("");//設(shè)置文本框默認內(nèi)容為空字符串}});/*創(chuàng)建窗口監(jiān)聽器,監(jiān)聽窗口的動作*如果窗口被關(guān)閉,則會彈出”確定關(guān)閉嗎"的溫馨提示窗口,以便用戶選擇*如果用戶選擇“是”,則關(guān)閉窗口**/this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){inta=JOptionPane.showConfirmDialog(null,"確定關(guān)閉嗎?","溫馨提示",JOptionPane.YES_NO_OPTION);if(a==1){System.exit(0);//關(guān)閉}}});客戶端連接部分:publicClientThread(ClientUIui){//ClientThread類構(gòu)造函數(shù),接收客戶端的界面對象this.ui=ui;try{client=newSocket("",1228);//這里設(shè)置連接服務(wù)器端的IP的端口println("連接服務(wù)器成功:端口1228");reader=newBufferedReader(newInputStreamReader(client.getInputStream()));//構(gòu)造客戶端輸入流并將字節(jié)轉(zhuǎn)換為字符writer=newPrintWriter(client.getOutputStream(),true);//如果為true,則println、printf或format方法將刷新輸出緩沖區(qū)}catch(IOExceptione){println("連接服務(wù)器失?。憾丝?228");println(e.toString());e.printStackTrace();}this.start();//啟動客戶端線程}4.4服務(wù)器端模塊部分代碼:服務(wù)器端啟動部分:publicvoidrun(){//線程開啟后,執(zhí)行以下操作try{ss=newServerSocket(1228);//創(chuàng)建綁定到端口號為1228的服務(wù)器套接字對象ui.clients=newArrayList<Socket>();//構(gòu)造一個包含指定端口號的連接客戶端的列表,啟動服務(wù)器println("啟動服務(wù)器成功:端口1228");while(true){//如果服務(wù)器啟動成功,執(zhí)行以下操作println("等待客戶端");Socketclient=ss.accept();//創(chuàng)建套接字對象,偵聽并接受到此套接字的連接,在連接傳入之前一直阻塞ui.clients.add(client);//如果與客戶端套接字連接成功,則將此客戶端套接字添加到列表中println("連接成功"+client.toString());//將客戶端套接字轉(zhuǎn)換為字符串輸出newListenerClient(ui,client);//創(chuàng)建服務(wù)器端與客戶端的監(jiān)聽器}}catch(IOExceptione){//如果服務(wù)器啟動失敗,輸出相應(yīng)信息println("啟動服務(wù)器失敗:端口1228");println(e.toString());e.printStackTrace();}}服務(wù)器端偵聽部分:publicvoidrun(){Stringmsg="";while(true){try{reader=newBufferedReader(newInputStreamReader(client.getInputStream()));writer=newPrintWriter(client.getOutputStream(),true);msg=reader.readLine();sendMsg(msg);}catch(IOExceptione){println(e.toString());//e.printStackTrace();break;}if(msg!=null&&msg.trim()!=""){println(">>"+msg);}}}//把信息廣播到所有用戶public
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度辦公室裝修與家具采購一體化合同范本3篇
- 初中音樂教學(xué)論文六篇
- 小班清明節(jié)語言課程設(shè)計
- 自控課程設(shè)計校正概論
- 網(wǎng)絡(luò)工程課程設(shè)計項目
- 電子鐘課程設(shè)計微機原理
- 智能榨汁機課程設(shè)計
- 2024綜合安全生產(chǎn)年終個人工作總結(jié)(30篇)
- 《高科技武器》課件
- 2024年職業(yè)技能鑒定中級題庫
- 老化測試記錄表
- 金屬齒形墊片安全操作規(guī)定
- (完整版)ABAQUS有限元分析實例詳解
- 區(qū)塊鏈技術(shù)與應(yīng)用學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
- 2023學(xué)年度廣東省廣州市天河區(qū)九年級(上)期末化學(xué)試卷(附詳解)
- 拍賣行業(yè)務(wù)管理制度拍賣行管理制度
- 焊接工序首件檢驗記錄表
- 七年級上學(xué)期期末考試歷史試卷及答案(人教版)
- 飲品創(chuàng)業(yè)項目計劃書
- 外國文學(xué)史期末考試題庫(含答案)
- GB 18384-2020電動汽車安全要求
評論
0/150
提交評論