版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上棗 莊 學(xué) 院信息科學(xué)與工程學(xué)院課程設(shè)計任務(wù)書 題 目: 基于UDP的聊天系統(tǒng) 小組成員: 譚德鵬、崔浩、王珂、李洪康 成員學(xué)號: 1、2 4、9 專業(yè)班級: 網(wǎng)絡(luò)工程、2012級本2班 課 程: Java網(wǎng)絡(luò)編程 指導(dǎo)教師: 呂加國 職稱: 副教授 完成時間: 2015年 4 月-2015年 6 月棗莊學(xué)院信息科學(xué)與工程學(xué)院制2015年4 月15日課程設(shè)計任務(wù)書及成績評定課程設(shè)計的任務(wù)和具體要求任務(wù):運用JDK和Eclipse開發(fā)環(huán)境,完成一個聊天或通訊系統(tǒng)的設(shè)計,初步掌握利用Java語言和JDK開發(fā)網(wǎng)絡(luò)通信程序的基本方法。具體要求:1、需求分析:根據(jù)自己的選題,繪
2、制用例圖、功能結(jié)構(gòu)圖等。2、系統(tǒng)設(shè)計:合理劃分系統(tǒng)的功能結(jié)構(gòu),寫清楚各個功能模塊之間的關(guān)系。3、詳細設(shè)計:根據(jù)自己選題的業(yè)務(wù)邏輯,完成系統(tǒng)的界面設(shè)計、代碼設(shè)計。4、設(shè)計小結(jié):總結(jié)課程設(shè)計的過程、體會及建議。6、其他:參考文獻等。指導(dǎo)教師簽字: 呂加國 日期: 2015-11-10 指導(dǎo)教師評語成績:_ 指導(dǎo)教師簽字: 日期: 2015-1-10課程設(shè)計所需軟件、硬件等n 硬件環(huán)境:Iterl(R) Core(TM)2 Duo CPU,主頻2.31GHz;內(nèi)存3G; 硬盤320G以上;1024×768顯示分辨率n 軟件環(huán)境: JDK XXX、Eclipse XXX 課程設(shè)計進度計劃起至
3、日期工作內(nèi)容備注6月10日6月20日我們小組根據(jù)所選的題目以及在這學(xué)期所學(xué)的軟件工程的知識,嚴格按照軟件生產(chǎn)的流程(使用的是瀑布模型)來完成此作品,小組成員各職其所,都完成了預(yù)期所做的工作!參考文獻、資料索引序號文獻、資料名稱編著者出版單位1Java網(wǎng)絡(luò)編程基礎(chǔ)(第2版).作者:朱喜福 戴舒樽 王曉勇專心-專注-專業(yè)目錄摘要 隨著網(wǎng)絡(luò)技術(shù)的發(fā)展及人們生活的需求,網(wǎng)絡(luò)聊天已越來越受到人們的青睞。網(wǎng)絡(luò)聊天已經(jīng)成為人們工作生活中傳遞信息、交流感情的重要工具,給人們帶來了很大的方便。 本課題是開發(fā)一個基于UDP的局域網(wǎng)聊天系統(tǒng),運用軟件工程的設(shè)計流程,綜合運用數(shù)據(jù)庫編程技術(shù)、Windows程
4、序設(shè)計技術(shù)、網(wǎng)絡(luò)通訊技術(shù),此網(wǎng)絡(luò)聊天工具采用客戶端/服務(wù)器(C/S)模式,客戶端采用UDP與服務(wù)器連接,客戶端與客戶端之間通過UDP互相通訊。服務(wù)器端具有服務(wù)器端口設(shè)置,此聊天工具能實現(xiàn)多人聊天功能,適用于局域網(wǎng)使用的網(wǎng)絡(luò)聊天工具,其操作簡單,靈活性好,運行也比較穩(wěn)定。一、需求分析1.1 課程設(shè)計目的 通過設(shè)計網(wǎng)絡(luò)協(xié)議及應(yīng)用程序來加深理解網(wǎng)絡(luò)各層的功能和機理,特別是對網(wǎng)絡(luò)層、運輸層、應(yīng)用層的理解。 獨立編寫基于UDP的網(wǎng)絡(luò)應(yīng)用程序,獨立上機調(diào)試程序,掌握基于UDP的網(wǎng)絡(luò)應(yīng)用基本技術(shù)。 培養(yǎng)獨立思考問題、分析問題的能力和規(guī)范化工程設(shè)計的能
5、力。綜合運用所學(xué)的知識去解決實踐中的應(yīng)用問題,掌握實驗技能。為以后的畢業(yè)設(shè)計與實際工作打下基礎(chǔ)。 1.2 課程設(shè)計的內(nèi)容 用戶數(shù)據(jù)報UDP是一個無連接協(xié)議使用這種協(xié)議時并不需要在兩臺計算機之間建立固定的連接也就是說通信雙方?jīng)]有服務(wù)器和客戶機之分它們之間進行的是對等通信所以它的優(yōu)勢很明顯是現(xiàn)代通信不可或缺的一部分。所以利用它的優(yōu)勢設(shè)計一個可以聊天的軟件實現(xiàn)兩臺計算機間的即時通訊。二 . 概要設(shè)計2.1 UDP協(xié)議的理解 2.1.1UDP協(xié)議定義用戶數(shù)據(jù)報協(xié)議,主要用來支持那些需要在計算機之間傳輸數(shù)據(jù)
6、的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié)議從問世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天,UDP仍然不失為一項非常實用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。UDP協(xié)議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層。UDP協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)報的形式。一個典型的數(shù)據(jù)報就是一個二進制數(shù)據(jù)的傳輸單位。每一個數(shù)據(jù)報的前8個字節(jié)用來包含報頭信息,剩余字節(jié)則用來包含具體的傳輸數(shù)據(jù)。UDP協(xié)議使用端口號為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道。正是采用這一機制實現(xiàn)對同一時刻內(nèi)多項應(yīng)用同時發(fā)送和接收數(shù)據(jù)的支持。數(shù)據(jù)發(fā)送
7、一方(可以是客戶端或服務(wù)器端)將UDP數(shù)據(jù)報通過源端口發(fā)送出去,而數(shù)據(jù)接收一方則通過目標(biāo)端口接收數(shù)據(jù)。有的網(wǎng)絡(luò)應(yīng)用只能使用預(yù)先為其預(yù)留或注冊的靜態(tài)端口;而另外一些網(wǎng)絡(luò)應(yīng)用則可以使用未被注冊的動態(tài)端口。因為UDP報頭使用兩個字節(jié)存放端口號,所以端口號的有效范圍是從0到65535。一般來說,大于49151的端口號都代表動態(tài)端口。數(shù)據(jù)報的長度是指包括報頭和數(shù)據(jù)部分在內(nèi)的總的字節(jié)數(shù)。因為報頭的長度是固定的,所以該域主要被用來計算可變長度的數(shù)據(jù)部分(又稱為數(shù)據(jù)負載)。數(shù)據(jù)報的最大長度根據(jù)操作環(huán)境的不同而各異。從理論上說,包含報頭在內(nèi)的數(shù)據(jù)報的最大長度為65535字節(jié)。不過,一些實際應(yīng)用往往會限制數(shù)據(jù)報的
8、大小,有時會降低到8192字節(jié)。UDP協(xié)議使用報頭中的校驗值來保證數(shù)據(jù)的安全。校驗值首先在數(shù)據(jù)發(fā)送方通過特殊的算法計算得出,在傳遞到接收方之后,還需要再重新計算。如果某個數(shù)據(jù)報在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發(fā)送和接收方的校驗計算值將不會相符,由此UDP協(xié)議可以檢測是否出錯。UDP協(xié)議并不提供數(shù)據(jù)傳送的保證機制。如果在從發(fā)送方到接收方的傳遞過程中出現(xiàn)數(shù)據(jù)報的丟失,協(xié)議本身并不能做出任何檢測或提示,由于排除了信息可靠傳遞機制,將安全和排序等功能移交給上層應(yīng)用來完成,極大降低了執(zhí)行時間,使速度得到了保證。 2.1.2UDP協(xié)議特點
9、; 1、UDP傳送數(shù)據(jù)前并不與對方建立連接,即UDP是無連接的,在傳輸數(shù)據(jù)前,發(fā)送方和接收方相互交換信息使雙方同步。UDP不對收到的數(shù)據(jù)進行排序,在UDP報文的首部中并沒有關(guān)于數(shù)據(jù)順序的2、UDP傳送數(shù)據(jù)前并不與對方建立連接,即UDP是無連接的,在傳輸數(shù)據(jù)前,發(fā)送方和接收方相互交換信息使雙方同步。3、UDP不對收到的數(shù)據(jù)進行排序,在UDP報文的首部中并沒有關(guān)于數(shù)據(jù)順序的信息(如TCP所采用的序號),而且報文不一定按順序到達的,所以接收端無從排起。 4、UDP對接收到的數(shù)據(jù)報不發(fā)送確認信號,發(fā)送端不知道數(shù)據(jù)是否被正確接收,也不會重發(fā)數(shù)據(jù)。&
10、#160; 5、UDP傳送數(shù)據(jù)較TCP快速,系統(tǒng)開銷也少。 6、由于缺乏擁塞控制(congestion control),需要基于網(wǎng)絡(luò)的機制來減小因失控和高速UDP流量負荷而導(dǎo)致的擁塞崩潰效應(yīng)。換句話說,因為UDP發(fā)送者不能夠檢測擁塞,所以像使用包隊列和丟棄技術(shù)的路由器這樣的網(wǎng)絡(luò)基本設(shè)備往往就成為降低UDP過大通信量的有效工具。數(shù)據(jù)報擁塞控制協(xié)議(DCCP)設(shè)計成通過在諸如流媒體類型的高速率UDP流中增加主機擁塞控制來減小這個潛在的問題。 從以上特點可知,UDP提供的是無連接的、不可靠的數(shù)據(jù)傳送方式,是一種盡力而為的數(shù)
11、據(jù)交付服務(wù)。2.1.3基于C/S的多客服端相互通信原理分析: 在C/S模式中,它是在分散式 ,集中式,以及分布式基礎(chǔ)上發(fā)展起來的一種新模型,目前大多數(shù)網(wǎng)絡(luò)通信以及應(yīng)用都屬于這種模型,C/S模式將一個網(wǎng)絡(luò)事務(wù)分為兩部分,一部分是客戶端(Client),他為用戶提供網(wǎng)絡(luò)請求服務(wù)的接口,另一部分是服務(wù)端(Server),它負責(zé)接受用戶對服務(wù)的請求,并將這些服務(wù)透明的提供給用戶,既適用于實際應(yīng)用的程序,又實用于真正的計算裝置,舉例來說,我們到飯店吃飯時,要首先提出請求吃什么,屬于客戶端,飯店服務(wù)員根據(jù)請求提供相應(yīng)的服務(wù),屬于服務(wù)端,至于相應(yīng)的飯菜是由哪一個廚師來做,則由飯店的服務(wù)員
12、去聯(lián)系,而客戶端只需要和服務(wù)器打交道就行了,從程序?qū)崿F(xiàn)上來說,客戶端和服務(wù)器打交道實際上是兩個進程打交道,服務(wù)端啟動server進程,并等待客戶端與其聯(lián)系,而客戶端則啟動客戶進程和服務(wù)器打交道。當(dāng)服務(wù)器進程處理完一個客服進程請求的信息之后,由接著等待其他客戶的請求。2.2 原理概述 采用UDP協(xié)議,通過服務(wù)器中轉(zhuǎn)方式。因此,現(xiàn)在的IP偵探在你僅僅跟對方發(fā)送聊天消息的時候是無法獲取到IP的。UDP 協(xié)議是不可靠協(xié)議,它只管發(fā)送,不管對方是否收到。但它的傳輸很高效,因為UDP協(xié)議排除了信息可靠傳遞機制,將安全和排序等功能移交給上層應(yīng)用來完成,極大降低了執(zhí)行時間,使速度得到了保證。例如,騰
13、訊采用了上層協(xié)議來保證可靠傳輸:如果客戶端使用UDP協(xié)議發(fā)出消息后,服務(wù)器收到該包,需要使用UDP協(xié)議發(fā)回一個應(yīng)答包。如此來保證消息可以無遺漏傳輸。2.3 界面設(shè)計 在Frame布局容器中,添加一個顯示聊天的文本框,在加入Panel面板,Panel面板中包括文本編輯框。三、詳細設(shè)計3.1 聊天界面的設(shè)計 public UDPChat() mainJframe = new JFrame("聊天UDP協(xié)議"); con=mainJframe.getContentPane(); showArea= new JTextArea(); showArea.setEditable(fal
14、se); showArea.setLineWrap(true); lal1=new JLabel("接收端口"); lal2=new JLabel("發(fā)送端口"); lal3=new JLabel("對方的地址"); sendPortText=new JTextField(); sendPortText.setColumns(5); receivePortText= new JTextField(); receivePortText.setColumns(5); IPAddressText=new JTextField(); IPAd
15、dressText.setColumns(8); starBtn=new JButton("開始"); starBtn.addActionListener(this); pane1=new JPanel(); pane1.setLayout(new FlowLayout(); pane1.add(lal1); pane1.add(receivePortText); pane1.add(lal2); pane1.add(sendPortText); pane1.add(lal3); pane1.add(IPAddressText); pane1.add(starBtn); J
16、SPane = new JScrollPane(showArea); msgText=new JTextField(); msgText.setColumns(40); msgText.setEditable(false); msgText.addActionListener(this); pane2=new JPanel(); pane2.setLayout(new FlowLayout(); pane2.add(msgText); sendBtn=new JButton(); pane2.add(sendBtn); con.add(pane1,BorderLayout.NORTH); co
17、n.add(JSPane,BorderLayout.CENTER); con.add(pane2,BorderLayout.SOUTH); mainJframe.setSize(600,400); mainJframe.setVisible(true); mainJframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);3.2 響應(yīng)發(fā)送按鈕 public void actionPerformed(ActionEvent e) try if(e.getSource() = starBtn) inBuf=new byteBUFSIZE; sendP
18、ort = Integer.parseInt(sendPortText.getText(); sendIP=InetAddress.getByName(IPAddressText.getText(); sendSocket=new DatagramSocket(); receivePort=Integer.parseInt(receivePortText.getText(); receivePack=new DatagramPacket(inBuf,BUFSIZE); receiveSocket=new DatagramSocket(receivePort); thread = new Thr
19、ead(this); thread.setPriority(Thread.MIN_PRIORITY); thread.start(); starBtn.setEnabled(false); sendBtn.setEnabled(true); msgText.setEditable(true); else outBuf=msgText.getText().getBytes(); sendPack=new DatagramPacket(outBuf,outBuf.length,sendIP,sendPort); sendSocket.send(sendPack); showArea.append(
20、"我說:"+msgText.getText()+"n"); msgText.setText(null); catch(UnknownHostException el) showArea.append("無法連接到指定地址n"); catch(SocketException el) showArea.append("無法打開指定端口n"); catch(IOException el) showArea.append("發(fā)送數(shù)據(jù)失敗n"); 3.3 測試函數(shù) public void run() String msgstr; while(true) try receiveSocket.receive(receivePack); msgstr=new String(receivePack.getData(),0,receiveP
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年教育機構(gòu)校長聘用合同書3篇
- 2024版勞務(wù)派遣就業(yè)合同范本
- 二零二四南京個人租賃房屋租賃合同租賃物交付驗收合同3篇
- 年度Β-內(nèi)酰胺類抗菌藥物產(chǎn)業(yè)分析報告
- 年度高檔生物顯微鏡競爭策略分析報告
- 年度大孔燒結(jié)空心磚競爭策略分析報告
- 2025年西瓜種植與農(nóng)業(yè)科技園區(qū)建設(shè)合作合同范本3篇
- 金屬材料及工藝技術(shù)創(chuàng)新研究報告
- 2025年度淋浴房淋浴房頂安裝合同4篇
- 二零二四年?;费哼\員安全管理責(zé)任書與考核合同3篇
- 寒潮雨雪應(yīng)急預(yù)案范文(2篇)
- DB33T 2570-2023 營商環(huán)境無感監(jiān)測規(guī)范 指標(biāo)體系
- 上海市2024年中考英語試題及答案
- 房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(2024版)宣傳海報
- 垃圾車駕駛員聘用合同
- 2025年道路運輸企業(yè)客運駕駛員安全教育培訓(xùn)計劃
- 南京工業(yè)大學(xué)浦江學(xué)院《線性代數(shù)(理工)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024版機床維護保養(yǎng)服務(wù)合同3篇
- 《論拒不執(zhí)行判決、裁定罪“執(zhí)行能力”之認定》
- 工程融資分紅合同范例
- 2024國家安全員資格考試題庫加解析答案
評論
0/150
提交評論