




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上棗 莊 學(xué) 院信息科學(xué)與工程學(xué)院課程設(shè)計(jì)任務(wù)書(shū) 題 目: 基于UDP的聊天系統(tǒng) 小組成員: 譚德鵬、崔浩、王珂、李洪康 成員學(xué)號(hào): 1、2 4、9 專(zhuān)業(yè)班級(jí): 網(wǎng)絡(luò)工程、2012級(jí)本2班 課 程: Java網(wǎng)絡(luò)編程 指導(dǎo)教師: 呂加國(guó) 職稱(chēng): 副教授 完成時(shí)間: 2015年 4 月-2015年 6 月棗莊學(xué)院信息科學(xué)與工程學(xué)院制2015年4 月15日課程設(shè)計(jì)任務(wù)書(shū)及成績(jī)?cè)u(píng)定課程設(shè)計(jì)的任務(wù)和具體要求任務(wù):運(yùn)用JDK和Eclipse開(kāi)發(fā)環(huán)境,完成一個(gè)聊天或通訊系統(tǒng)的設(shè)計(jì),初步掌握利用Java語(yǔ)言和JDK開(kāi)發(fā)網(wǎng)絡(luò)通信程序的基本方法。具體要求:1、需求分析:根據(jù)自己的選題,繪
2、制用例圖、功能結(jié)構(gòu)圖等。2、系統(tǒng)設(shè)計(jì):合理劃分系統(tǒng)的功能結(jié)構(gòu),寫(xiě)清楚各個(gè)功能模塊之間的關(guān)系。3、詳細(xì)設(shè)計(jì):根據(jù)自己選題的業(yè)務(wù)邏輯,完成系統(tǒng)的界面設(shè)計(jì)、代碼設(shè)計(jì)。4、設(shè)計(jì)小結(jié):總結(jié)課程設(shè)計(jì)的過(guò)程、體會(huì)及建議。6、其他:參考文獻(xiàn)等。指導(dǎo)教師簽字: 呂加國(guó) 日期: 2015-11-10 指導(dǎo)教師評(píng)語(yǔ)成績(jī):_ 指導(dǎo)教師簽字: 日期: 2015-1-10課程設(shè)計(jì)所需軟件、硬件等n 硬件環(huán)境:Iterl(R) Core(TM)2 Duo CPU,主頻2.31GHz;內(nèi)存3G; 硬盤(pán)320G以上;1024×768顯示分辨率n 軟件環(huán)境: JDK XXX、Eclipse XXX 課程設(shè)計(jì)進(jìn)度計(jì)劃起至
3、日期工作內(nèi)容備注6月10日6月20日我們小組根據(jù)所選的題目以及在這學(xué)期所學(xué)的軟件工程的知識(shí),嚴(yán)格按照軟件生產(chǎn)的流程(使用的是瀑布模型)來(lái)完成此作品,小組成員各職其所,都完成了預(yù)期所做的工作!參考文獻(xiàn)、資料索引序號(hào)文獻(xiàn)、資料名稱(chēng)編著者出版單位1Java網(wǎng)絡(luò)編程基礎(chǔ)(第2版).作者:朱喜福 戴舒樽 王曉勇專(zhuān)心-專(zhuān)注-專(zhuān)業(yè)目錄摘要 隨著網(wǎng)絡(luò)技術(shù)的發(fā)展及人們生活的需求,網(wǎng)絡(luò)聊天已越來(lái)越受到人們的青睞。網(wǎng)絡(luò)聊天已經(jīng)成為人們工作生活中傳遞信息、交流感情的重要工具,給人們帶來(lái)了很大的方便。 本課題是開(kāi)發(fā)一個(gè)基于UDP的局域網(wǎng)聊天系統(tǒng),運(yùn)用軟件工程的設(shè)計(jì)流程,綜合運(yùn)用數(shù)據(jù)庫(kù)編程技術(shù)、Windows程
4、序設(shè)計(jì)技術(shù)、網(wǎng)絡(luò)通訊技術(shù),此網(wǎng)絡(luò)聊天工具采用客戶(hù)端/服務(wù)器(C/S)模式,客戶(hù)端采用UDP與服務(wù)器連接,客戶(hù)端與客戶(hù)端之間通過(guò)UDP互相通訊。服務(wù)器端具有服務(wù)器端口設(shè)置,此聊天工具能實(shí)現(xiàn)多人聊天功能,適用于局域網(wǎng)使用的網(wǎng)絡(luò)聊天工具,其操作簡(jiǎn)單,靈活性好,運(yùn)行也比較穩(wěn)定。一、需求分析1.1 課程設(shè)計(jì)目的 通過(guò)設(shè)計(jì)網(wǎng)絡(luò)協(xié)議及應(yīng)用程序來(lái)加深理解網(wǎng)絡(luò)各層的功能和機(jī)理,特別是對(duì)網(wǎng)絡(luò)層、運(yùn)輸層、應(yīng)用層的理解。 獨(dú)立編寫(xiě)基于UDP的網(wǎng)絡(luò)應(yīng)用程序,獨(dú)立上機(jī)調(diào)試程序,掌握基于UDP的網(wǎng)絡(luò)應(yīng)用基本技術(shù)。 培養(yǎng)獨(dú)立思考問(wèn)題、分析問(wèn)題的能力和規(guī)范化工程設(shè)計(jì)的能
5、力。綜合運(yùn)用所學(xué)的知識(shí)去解決實(shí)踐中的應(yīng)用問(wèn)題,掌握實(shí)驗(yàn)技能。為以后的畢業(yè)設(shè)計(jì)與實(shí)際工作打下基礎(chǔ)。 1.2 課程設(shè)計(jì)的內(nèi)容 用戶(hù)數(shù)據(jù)報(bào)UDP是一個(gè)無(wú)連接協(xié)議使用這種協(xié)議時(shí)并不需要在兩臺(tái)計(jì)算機(jī)之間建立固定的連接也就是說(shuō)通信雙方?jīng)]有服務(wù)器和客戶(hù)機(jī)之分它們之間進(jìn)行的是對(duì)等通信所以它的優(yōu)勢(shì)很明顯是現(xiàn)代通信不可或缺的一部分。所以利用它的優(yōu)勢(shì)設(shè)計(jì)一個(gè)可以聊天的軟件實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)間的即時(shí)通訊。二 . 概要設(shè)計(jì)2.1 UDP協(xié)議的理解 2.1.1UDP協(xié)議定義用戶(hù)數(shù)據(jù)報(bào)協(xié)議,主要用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)
6、的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶(hù)/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類(lèi)似協(xié)議所掩蓋,但是即使是在今天,UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。UDP協(xié)議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層。UDP協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)報(bào)的形式。一個(gè)典型的數(shù)據(jù)報(bào)就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)報(bào)的前8個(gè)字節(jié)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳輸數(shù)據(jù)。UDP協(xié)議使用端口號(hào)為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道。正是采用這一機(jī)制實(shí)現(xiàn)對(duì)同一時(shí)刻內(nèi)多項(xiàng)應(yīng)用同時(shí)發(fā)送和接收數(shù)據(jù)的支持。數(shù)據(jù)發(fā)送
7、一方(可以是客戶(hù)端或服務(wù)器端)將UDP數(shù)據(jù)報(bào)通過(guò)源端口發(fā)送出去,而數(shù)據(jù)接收一方則通過(guò)目標(biāo)端口接收數(shù)據(jù)。有的網(wǎng)絡(luò)應(yīng)用只能使用預(yù)先為其預(yù)留或注冊(cè)的靜態(tài)端口;而另外一些網(wǎng)絡(luò)應(yīng)用則可以使用未被注冊(cè)的動(dòng)態(tài)端口。因?yàn)閁DP報(bào)頭使用兩個(gè)字節(jié)存放端口號(hào),所以端口號(hào)的有效范圍是從0到65535。一般來(lái)說(shuō),大于49151的端口號(hào)都代表動(dòng)態(tài)端口。數(shù)據(jù)報(bào)的長(zhǎng)度是指包括報(bào)頭和數(shù)據(jù)部分在內(nèi)的總的字節(jié)數(shù)。因?yàn)閳?bào)頭的長(zhǎng)度是固定的,所以該域主要被用來(lái)計(jì)算可變長(zhǎng)度的數(shù)據(jù)部分(又稱(chēng)為數(shù)據(jù)負(fù)載)。數(shù)據(jù)報(bào)的最大長(zhǎng)度根據(jù)操作環(huán)境的不同而各異。從理論上說(shuō),包含報(bào)頭在內(nèi)的數(shù)據(jù)報(bào)的最大長(zhǎng)度為65535字節(jié)。不過(guò),一些實(shí)際應(yīng)用往往會(huì)限制數(shù)據(jù)報(bào)的
8、大小,有時(shí)會(huì)降低到8192字節(jié)。UDP協(xié)議使用報(bào)頭中的校驗(yàn)值來(lái)保證數(shù)據(jù)的安全。校驗(yàn)值首先在數(shù)據(jù)發(fā)送方通過(guò)特殊的算法計(jì)算得出,在傳遞到接收方之后,還需要再重新計(jì)算。如果某個(gè)數(shù)據(jù)報(bào)在傳輸過(guò)程中被第三方篡改或者由于線路噪音等原因受到損壞,發(fā)送和接收方的校驗(yàn)計(jì)算值將不會(huì)相符,由此UDP協(xié)議可以檢測(cè)是否出錯(cuò)。UDP協(xié)議并不提供數(shù)據(jù)傳送的保證機(jī)制。如果在從發(fā)送方到接收方的傳遞過(guò)程中出現(xiàn)數(shù)據(jù)報(bào)的丟失,協(xié)議本身并不能做出任何檢測(cè)或提示,由于排除了信息可靠傳遞機(jī)制,將安全和排序等功能移交給上層應(yīng)用來(lái)完成,極大降低了執(zhí)行時(shí)間,使速度得到了保證。 2.1.2UDP協(xié)議特點(diǎn)
9、; 1、UDP傳送數(shù)據(jù)前并不與對(duì)方建立連接,即UDP是無(wú)連接的,在傳輸數(shù)據(jù)前,發(fā)送方和接收方相互交換信息使雙方同步。UDP不對(duì)收到的數(shù)據(jù)進(jìn)行排序,在UDP報(bào)文的首部中并沒(méi)有關(guān)于數(shù)據(jù)順序的2、UDP傳送數(shù)據(jù)前并不與對(duì)方建立連接,即UDP是無(wú)連接的,在傳輸數(shù)據(jù)前,發(fā)送方和接收方相互交換信息使雙方同步。3、UDP不對(duì)收到的數(shù)據(jù)進(jìn)行排序,在UDP報(bào)文的首部中并沒(méi)有關(guān)于數(shù)據(jù)順序的信息(如TCP所采用的序號(hào)),而且報(bào)文不一定按順序到達(dá)的,所以接收端無(wú)從排起。 4、UDP對(duì)接收到的數(shù)據(jù)報(bào)不發(fā)送確認(rèn)信號(hào),發(fā)送端不知道數(shù)據(jù)是否被正確接收,也不會(huì)重發(fā)數(shù)據(jù)。&
10、#160; 5、UDP傳送數(shù)據(jù)較TCP快速,系統(tǒng)開(kāi)銷(xiāo)也少。 6、由于缺乏擁塞控制(congestion control),需要基于網(wǎng)絡(luò)的機(jī)制來(lái)減小因失控和高速UDP流量負(fù)荷而導(dǎo)致的擁塞崩潰效應(yīng)。換句話說(shuō),因?yàn)閁DP發(fā)送者不能夠檢測(cè)擁塞,所以像使用包隊(duì)列和丟棄技術(shù)的路由器這樣的網(wǎng)絡(luò)基本設(shè)備往往就成為降低UDP過(guò)大通信量的有效工具。數(shù)據(jù)報(bào)擁塞控制協(xié)議(DCCP)設(shè)計(jì)成通過(guò)在諸如流媒體類(lèi)型的高速率UDP流中增加主機(jī)擁塞控制來(lái)減小這個(gè)潛在的問(wèn)題。 從以上特點(diǎn)可知,UDP提供的是無(wú)連接的、不可靠的數(shù)據(jù)傳送方式,是一種盡力而為的數(shù)
11、據(jù)交付服務(wù)。2.1.3基于C/S的多客服端相互通信原理分析: 在C/S模式中,它是在分散式 ,集中式,以及分布式基礎(chǔ)上發(fā)展起來(lái)的一種新模型,目前大多數(shù)網(wǎng)絡(luò)通信以及應(yīng)用都屬于這種模型,C/S模式將一個(gè)網(wǎng)絡(luò)事務(wù)分為兩部分,一部分是客戶(hù)端(Client),他為用戶(hù)提供網(wǎng)絡(luò)請(qǐng)求服務(wù)的接口,另一部分是服務(wù)端(Server),它負(fù)責(zé)接受用戶(hù)對(duì)服務(wù)的請(qǐng)求,并將這些服務(wù)透明的提供給用戶(hù),既適用于實(shí)際應(yīng)用的程序,又實(shí)用于真正的計(jì)算裝置,舉例來(lái)說(shuō),我們到飯店吃飯時(shí),要首先提出請(qǐng)求吃什么,屬于客戶(hù)端,飯店服務(wù)員根據(jù)請(qǐng)求提供相應(yīng)的服務(wù),屬于服務(wù)端,至于相應(yīng)的飯菜是由哪一個(gè)廚師來(lái)做,則由飯店的服務(wù)員
12、去聯(lián)系,而客戶(hù)端只需要和服務(wù)器打交道就行了,從程序?qū)崿F(xiàn)上來(lái)說(shuō),客戶(hù)端和服務(wù)器打交道實(shí)際上是兩個(gè)進(jìn)程打交道,服務(wù)端啟動(dòng)server進(jìn)程,并等待客戶(hù)端與其聯(lián)系,而客戶(hù)端則啟動(dòng)客戶(hù)進(jìn)程和服務(wù)器打交道。當(dāng)服務(wù)器進(jìn)程處理完一個(gè)客服進(jìn)程請(qǐng)求的信息之后,由接著等待其他客戶(hù)的請(qǐng)求。2.2 原理概述 采用UDP協(xié)議,通過(guò)服務(wù)器中轉(zhuǎn)方式。因此,現(xiàn)在的IP偵探在你僅僅跟對(duì)方發(fā)送聊天消息的時(shí)候是無(wú)法獲取到IP的。UDP 協(xié)議是不可靠協(xié)議,它只管發(fā)送,不管對(duì)方是否收到。但它的傳輸很高效,因?yàn)閁DP協(xié)議排除了信息可靠傳遞機(jī)制,將安全和排序等功能移交給上層應(yīng)用來(lái)完成,極大降低了執(zhí)行時(shí)間,使速度得到了保證。例如,騰
13、訊采用了上層協(xié)議來(lái)保證可靠傳輸:如果客戶(hù)端使用UDP協(xié)議發(fā)出消息后,服務(wù)器收到該包,需要使用UDP協(xié)議發(fā)回一個(gè)應(yīng)答包。如此來(lái)保證消息可以無(wú)遺漏傳輸。2.3 界面設(shè)計(jì) 在Frame布局容器中,添加一個(gè)顯示聊天的文本框,在加入Panel面板,Panel面板中包括文本編輯框。三、詳細(xì)設(shè)計(jì)3.1 聊天界面的設(shè)計(jì) 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("對(duì)方的地址"); sendPortText=new JTextField(); sendPortText.setColumns(5); receivePortText= new JTextField(); receivePortText.setColumns(5); IPAddressText=new JTextField(); IPAd
15、dressText.setColumns(8); starBtn=new JButton("開(kāi)始"); 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、"我說(shuō):"+msgText.getText()+"n"); msgText.setText(null); catch(UnknownHostException el) showArea.append("無(wú)法連接到指定地址n"); catch(SocketException el) showArea.append("無(wú)法打開(kāi)指定端口n"); catch(IOException el) showArea.append("發(fā)送數(shù)據(jù)失敗n"); 3.3 測(cè)試函數(shù) public void run() String msgstr; while(true) try receiveSocket.receive(receivePack); msgstr=new String(receivePack.getData(),0,receiveP
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山東勝利職業(yè)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025年山東電力高等專(zhuān)科學(xué)校高職單招語(yǔ)文2019-2024歷年真題考點(diǎn)試卷含答案解析
- 2025年山東工業(yè)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年(2019-2024年)真題考點(diǎn)試卷含答案解析
- 2025年寧夏葡萄酒與防沙治沙職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年(2019-2024年)真題考點(diǎn)試卷含答案解析
- 2025年寧夏藝術(shù)職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2025年太原旅游職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年天津市職業(yè)大學(xué)高職單招(數(shù)學(xué))歷年真題考點(diǎn)含答案解析
- H7N9培訓(xùn)知識(shí)課件
- 春節(jié)聯(lián)歡活動(dòng)策劃
- 多重耐藥菌醫(yī)院感染管理
- 《美麗中國(guó)是我家》 課件
- GB/T 91-2000開(kāi)口銷(xiāo)
- GB/T 12325-2008電能質(zhì)量供電電壓偏差
- 發(fā)熱待查臨床路徑
- 《圖像傳感器》課件講課稿
- 九年級(jí)化學(xué)第二次模擬考試質(zhì)量分析析中考化學(xué)試卷分析
- 眩暈-前庭神經(jīng)炎課件
- 【16G101】鋼筋平法圖集三維速查2020 88P
- 《踐行社會(huì)主義核心價(jià)值觀》主題班會(huì)教案
- 消防應(yīng)急組織架構(gòu)圖
- TJSTJXH 6-2022 城市軌道交通工程盾構(gòu)管片預(yù)制及拼裝技術(shù)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論