基于UDP的數(shù)據(jù)包收發(fā)程序_第1頁
基于UDP的數(shù)據(jù)包收發(fā)程序_第2頁
基于UDP的數(shù)據(jù)包收發(fā)程序_第3頁
基于UDP的數(shù)據(jù)包收發(fā)程序_第4頁
基于UDP的數(shù)據(jù)包收發(fā)程序_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課課程程設設計計報報告告課程名稱:課程名稱: 計算機網絡 設計題目設計題目: 基于 UDP 的數(shù)據(jù)包收發(fā)程序 系系 別:別: 計算機科學與技術系 專專 業(yè):業(yè): 計算機科學與技術 組組 別:別: 第六組 起止日期起止日期: 2011 年 11 月 15 日2011 年 12 月 8 日指導教師指導教師: 計算機科學與技術系二計算機科學與技術系二一一年制一一年制滁州學院本科課程設計2 / 26課程設計任務書課程設計任務書課程設計題目基于 UDP 的數(shù)據(jù)包收發(fā)程序組長學號2011220106班級2011 級專升本班系別計算機科學與技術系專業(yè)計算機科學與技術組員指導教師課程設計目的1)提高程序設計的

2、能力2)提高團隊合作能力3)提高對網絡文件傳輸協(xié)議理解能力課程設計所需環(huán)境1)Windows 操作系統(tǒng)平臺2)Eclipse 編譯環(huán)境課程設計任務要求1)基于 UCP,采用 C/S 結構模式2)客戶端能夠實現(xiàn)與服務器端的連接3)能夠實現(xiàn)數(shù)據(jù)包的收發(fā)課程設計工作進度計劃序號起止日期工 作 內 容分工情況12011 年 11 月 15 日2011 年 11 月 17 日分析課程設計要求,確定目標22011 年 11 月 18 日2011 年 11 月 20 日查找資料,確定人員分工32011 年 11 月 21 日2011 年 11 月 27 日設計軟件功能模塊42011 年 11 月 28 日2

3、011 年 12 月 20 日編寫代碼、實現(xiàn)功能模塊52011 年 12 月 21 日2011 年 12 月 27 日系統(tǒng)整合以及測試62011 年 12 月 28 日2011 年 12 月 30 日完成課程設計文檔教研室審核意見:教研室主任簽字: 年 月 日滁州學院本科課程設計3 / 26目目錄錄1 引言.42項目開發(fā)環(huán)境及工具介紹.42.1 項目開發(fā)環(huán)境.42.2 開發(fā)工具介紹.53系統(tǒng)開發(fā)分析.62.1 系統(tǒng)需求分析.62.2 系統(tǒng)開發(fā)過程.64系統(tǒng)功能描述.75系統(tǒng)設計詳細.75.1 設計前臺頁面.75.2 設計前臺頁面里的功能.96程序設計結果界面演示.186.1 設計結果演示.18

4、6.2 項目運行說明.227課程設計總結與體會.227.1 總結.227.2 體會.23致謝.23參考文獻.24滁州學院本科課程設計4 / 261 引言引言UDP(User Data Protocol,用戶數(shù)據(jù)報協(xié)議)是與 TCP 相對應的協(xié)議。它是面向非連接的協(xié)議,它不與對方建立連接,而是直接就把數(shù)據(jù)包發(fā)送過去!在選擇使用協(xié)議的時候,選擇 UDP 必須要謹慎。在網絡質量令人不十分滿意的環(huán)境下,UDP 協(xié)議數(shù)據(jù)包丟失會比較嚴重。但是由于 UDP的特性:它不屬于連接型協(xié)議,因而具有資源消耗小,處理速度快的優(yōu)點,所以通常音頻、視頻和普通數(shù)據(jù)在傳送時使用 UDP 較多,因為它們即使偶爾丟失一兩個數(shù)據(jù)

5、包,也不會對接收結果產生太大影響。比如我們聊天用的 ICQ 和 QQ 就是使用的 UDP 協(xié)議。UDP 協(xié)議使用報頭中的校驗值來保證數(shù)據(jù)的安全。校驗值首先在數(shù)據(jù)發(fā)送方通過特殊的算法計算得出,在傳遞到接收方之后,還需要再重新計算。如果某個數(shù)據(jù)報在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發(fā)送和接收方的校驗計算值將不會相符,由此UDP 協(xié)議可以檢測是否出錯。2項目開發(fā)環(huán)境及工具介紹項目開發(fā)環(huán)境及工具介紹2.12.1 項目開發(fā)環(huán)境項目開發(fā)環(huán)境1.安裝 JDK 到 sun 的官(http:/ )下載 JDK6.0,然后運行 JDK 6.0 安裝程序 jdk-6u18-windows-i58

6、6.exe.安裝過程滁州學院本科課程設計5 / 26中所有選項基本保持默認(安裝路徑還是可以改改的,個人認為還是不要把java 裝到 C 盤比較好,為了機子系統(tǒng)的維護)。2.配置環(huán)境變量 在“我的電腦”上點右鍵-“屬性”-“高級”- “環(huán)境變量(N)” 。在“系統(tǒng)變量”中,設置 3 項屬性,JAVA_HOME,PATH,CLASSPATH(大小寫無所謂),若已存在則點擊“編輯” ,不存在則點擊“新建” 。JAVA_HOME D:Program FilesJavajdk1.6.0_05注意:1.JAVA_HOME 指明 JDK 安裝路徑,就是剛才安裝時所選擇的路徑,此路徑下包括 lib,bin,

7、jre 等文件夾。2. JAVA_HOME 的路徑后面不要加分號(;) ,不然會報錯。Path %JAVA_HOME%bin;在系統(tǒng)變量 Path 的值的最前面加入.否則可能在運行時,系統(tǒng)選擇部署在前面的 jre 環(huán)境。注意:Path 使得系統(tǒng)可以在任何路徑下識別 java 命令CLASSPATH.;%JAVA_HOME%lib注意: 最前面的點表示當前目錄,不能省略注意:CLASSPATH 為 java 加載類(class or lib)路徑,只有類在classpath 中,java 命令才能識別2.12.1 開發(fā)工具介紹開發(fā)工具介紹Eclipse 開發(fā)工具 :eclipse-galileo

8、Eclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標準的插件集,包括 Java 開發(fā)工具(Java Development Tools,JDT) 。 滁州學院本科課程設計6 / 26 Eclipse 最初是由 IBM 公司開發(fā)的替代商業(yè)軟件 Visual Age for Java的下一代 IDE 開發(fā)環(huán)境,2001 年 11 月貢獻給開源社區(qū),現(xiàn)在它由非營利軟件供應商聯(lián)盟 Eclipse 基金會(Eclipse Foundation)管理。 2003 年,Eclipse

9、 3.0 選擇 OSGi 服務平臺規(guī)范為運行時架構。 2007 年 6 月,穩(wěn)定版 3.3 發(fā)布。2008 年 6 月發(fā)布代號為 Ganymede 的 3.4 版。2009 年 7 月發(fā)布代號為 GALILEO的 3.5 版。 Eclipse 是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE) 。最初主要用來Java 語言開發(fā),但是目前亦有人通過插件使其作為其他計算機語言比如 C+和Python 的開發(fā)工具。Eclipse 的本身只是一個框架平臺,但是眾多插件的支持使得 Eclipse 擁有其他功能相對固定的 IDE 軟件很難具有的靈活性。許多軟件開發(fā)商以 Eclipse 為框架開發(fā)自己的 IDE。

10、Eclipse 最初由 OTI 和 IBM 兩家公司的 IDE 產品開發(fā)組創(chuàng)建,起始于1999 年 4 月。IBM 提供了最初的 Eclipse 代碼基礎,包括 Platform、JDT 和PDE。目前由 IBM 牽頭,圍繞著 Eclipse 項目已經發(fā)展成為了一個龐大的Eclipse 聯(lián)盟,有 150 多家軟件公司參與到 Eclipse 項目中,其中包括Borland、Rational Software、Red Hat 及 Sybase 等。Eclipse 是一個開發(fā)源碼項目,它其實是 Visual Age for Java 的替代品,其界面跟先前的 Visual Age for Java

11、差不多,但由于其開放源碼,任何人都可以免費得到,并可以在此基礎上開發(fā)各自的插件,因此越來越受人們關注。近期還有包括 Oracle 在內的許多大公司也紛紛加入了該項目,并宣稱 Eclipse 將來能成為可進行任何語言開發(fā)的 IDE 集大成者,使用者只需下載各種語言的插件即可。 雖然大多數(shù)用戶很樂于將 Eclipse 當作 Java IDE 來使用,但 Eclipse 的目標不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE) ,這個組件主要針對希望擴展 Eclipse 的軟件開發(fā)人員,因為它允許他們構建與 Eclipse 環(huán)境無

12、縫集成的工具。由于 Eclipse 中的每樣東西都是插件,對于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。3系統(tǒng)開發(fā)分析系統(tǒng)開發(fā)分析3.13.1 系統(tǒng)系統(tǒng)需求分析需求分析(1)按照 UDP 協(xié)議數(shù)據(jù)包發(fā)送方式實現(xiàn)用戶端之間的通信。(2)統(tǒng)計包的發(fā)送和接收數(shù),計算數(shù)據(jù)包的丟失數(shù)。滁州學院本科課程設計7 / 26(3)設計美觀易用的圖形界面。3.23.2 系統(tǒng)系統(tǒng)開發(fā)過程開發(fā)過程首先,通過整體分析項目所要實現(xiàn)的功能,設計一個前臺頁面,頁面主要包括三部分:第一部分是左邊部分,包括發(fā)送的消息以及接收消息的文本框;第二部分是右邊部分,包

13、括發(fā)送、接收、丟失的數(shù)據(jù)包數(shù)以及端口號;第三部分是最底部按鈕部分,包括發(fā)送、關閉按鈕以及打開端口按鈕。其次,通過設計的前臺頁面,實現(xiàn)各部分應有的功能。最后,對項目進行測試,看功能是否都已實現(xiàn)。4系統(tǒng)功能描述系統(tǒng)功能描述本項目實現(xiàn)了按照 UDP 協(xié)議數(shù)據(jù)包發(fā)送方式實現(xiàn)用戶端之間的通信,在前臺頁面左邊下面的文本框中輸入信息后,打開端口,按發(fā)送按鈕,信息會自動出現(xiàn)在上面的顯示文本框中,右邊的發(fā)送數(shù)據(jù)包、接收數(shù)據(jù)包、丟失數(shù)據(jù)包數(shù)會自動顯示,這樣就實現(xiàn)了統(tǒng)計數(shù)據(jù)包的發(fā)送、接收以及丟失數(shù)。5系統(tǒng)設計詳細系統(tǒng)設計詳細5.1 設計前臺頁面設計前臺頁面在 Eclipse 里新建一項目,在 src 文件夾下的co

14、m.think.udp.view 包中新建一個 UdpFrame.java,包含 initMain()、initJframe()、initLeftContent()、initRightContent()、initBottomContent()方法。前臺頁面截圖如下:滁州學院本科課程設計8 / 26InitMain()方法中實現(xiàn)了調用 initJframe()、initLeftContent()、initRightContent()、initBottomContent()方法,主要代碼:initJframe()方法中實現(xiàn)了設置前臺頁面的大小、頁面的標題,主要代碼:initLeftContent(

15、)方法中實現(xiàn)了設置前臺頁面的左邊顯示內容,主要代碼:public void initMain()initJframe();initLeftContent();initRightContent();initBottomContent();public void initJframe()cp.setLayout(null);this.setTitle(UDP協(xié)議接收發(fā)送數(shù)據(jù)包程序);this.setSize(500,400);public void initLeftContent()cp.add(this.udp.getLab(顯示);cp.add(this.udp.getScroll1();cp

16、.add(this.udp.getLab1(按ENTER鍵發(fā)送);cp.add(this.udp.getscrol12(); 滁州學院本科課程設計9 / 26initRightContent()方法中實現(xiàn)了設置前臺頁面的右邊顯示內容,主要代碼:initBottomContent()方法中實現(xiàn)了設置前臺頁面的底部的按鈕,主要代碼:5.2 設計前臺頁面里面的功能設計前臺頁面里面的功能在 Eclipse 里 src 文件夾下的 com.think.udp.pojo 包中新建一個UDP.java,包含 getScroll1()、getscrol12()、getLab1 ()、getLab2()、get

17、Lab3()、getLab4()、getLab5()、getLab6()、getTf()、getTf1()、getTf2()、getTf3()、getJb()、getJb1()、getJb2()、getSendDataPackage()、setSendDataPackage()方法。getScroll1()方法中實現(xiàn)了為 JTextArea 添加滾動條,同時為 JTextArea添加鼠標監(jiān)聽事件,當鼠標移進 【顯示】區(qū)域時,光標變成文本輸入型(TEXT_CURSOR) ,移除時會變成默認的形狀,主要代碼:public void initRightContent()cp.add(this.udp

18、.getLab2(發(fā)送的數(shù)據(jù)包:);cp.add(this.udp.getTf();cp.add(this.udp.getLab3(接收的數(shù)據(jù)包:);cp.add(this.udp.getTf1(); cp.add(this.udp.getLab4(丟失的數(shù)據(jù)包:);cp.add(this.udp.getTf2(); cp.add(this.udp.getLab5(端口號:);cp.add(this.udp.getTf3(Constant.PORT+); cp.add(this.udp.getLab6(提示:先打開端口);public void initBottomContent()cp.ad

19、d(this.udp.getJb(發(fā)送);cp.add(this.udp.getJb1(關閉窗口);cp.add(this.udp.getJb2(打開端口);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocationRelativeTo(null);this.setVisible(true);public JScrollPane getScroll1() text.setBounds(20,40,250,100);text.setEditable(false);text.addMouseListener(new Mo

20、useAdapter() public void mouseEntered(MouseEvent e) text.setCursor(new Cursor(Cursor.TEXT_CURSOR); public void mouseExited(MouseEvent e) text.setCursor(new Cursor(Cursor.DEFAULT_CURSOR); );JScrollPane scroll1 = new JScrollPane(text);scroll1.setBounds(20,40,250,100);scroll1.setHorizontalScrollBarPoli

21、cy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);scroll1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);return scroll1;滁州學院本科課程設計10 / 26getscrol12()方法中實現(xiàn)為 text1 添加滾動條,當輸入內容超出顯示區(qū)域時就自動顯示滾動條,主要代碼:getLab()方法中創(chuàng)建一個標簽,主要代碼:public JScrollPane getscrol12() text1.setBounds(20,180,250,100);

22、JScrollPane scroll2 = new JScrollPane(text1);scroll2.setBounds(20,180,250,100);scroll2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);scroll2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);return scroll2;public JLabel getLab(String labName) lab = new J

23、Label(labName);lab.setBounds(20,20,140,20);return lab;滁州學院本科課程設計11 / 26getLab1()方法中創(chuàng)建一個標簽,主要代碼:getLab2()方法中創(chuàng)建一個標簽,主要代碼: getLab3()方法中創(chuàng)建一個標簽,主要代碼:getLab4()方法中實現(xiàn)了設置前臺頁面的底部的按鈕,主要代碼:getLab4()方法中創(chuàng)建一個標簽,主要代碼:getLab5()方法中創(chuàng)建一個標簽,主要代碼:public JLabel getLab1(String name) lab1=new JLabel(name);lab1.setBounds(20,

24、150,100,20);return lab1;public JLabel getLab2(String name) lab2=new JLabel(name);lab2.setBounds(300,20,100,20);return lab2;public JLabel getLab3(String name) lab3=new JLabel(name);lab3.setBounds(300,80,100,20);return lab3;public JLabel getLab4(String name) lab4=new JLabel(name);lab4.setBounds(300,14

25、0,100,20);return lab4;public JLabel getLab5(String name) lab5=new JLabel(name);lab5.setBounds(300,200,100,20);return lab5;滁州學院本科課程設計12 / 26getLab6()方法中創(chuàng)建一個標簽,主要代碼:getTf()方法中實現(xiàn)了設置前臺頁面的底部的按鈕,主要代碼:getTf1()方法中為輸入區(qū)域添加鼠標監(jiān)聽事件:當鼠標移進輸入區(qū)域時,光標變成文本輸入型(TEXT_CURSOR) ,移除時會變成默認的形狀,并且設置文本域為不可編輯,主要代碼:getTf2()方法中為輸入區(qū)域

26、添加鼠標監(jiān)聽事件:當鼠標移進輸入區(qū)域時,光標變成文本輸入型(TEXT_CURSOR) ,移除時會變成默認的形狀,并且設置文本域為不可編輯,主要代碼:public JLabel getLab6(String name) lab6=new JLabel(name);lab6.setBounds(300,260,150,20);return lab6;public JTextField getTf1() tf1.setBounds(300,110,150,20);tf1.setEditable(false);tf1.addMouseListener(new MouseAdapter() public

27、 void mouseEntered(MouseEvent e) tf1.setCursor(new Cursor(Cursor.TEXT_CURSOR); public void mouseExited(MouseEvent e) tf1.setCursor(new Cursor(Cursor.DEFAULT_CURSOR); );return tf1;public JTextField getTf2() tf2.setBounds(300,170,150,20);tf2.setEditable(false);tf2.addMouseListener(new MouseAdapter() p

28、ublic void mouseEntered(MouseEvent e) tf2.setCursor(new Cursor(Cursor.TEXT_CURSOR); public void mouseExited(MouseEvent e) tf2.setCursor(new Cursor(Cursor.DEFAULT_CURSOR); );return tf2; );return tf2;滁州學院本科課程設計13 / 26getTf3()方法中實現(xiàn)了設置前臺頁面的底部的按鈕,主要代碼:getTf3()方法主要代碼:getJb()方法中實現(xiàn)了初始化發(fā)送按鈕,設置為灰色不可用,主要代碼: ge

29、tJb1()方法中實現(xiàn)了初始化關閉按鈕,為關閉按鈕添加鼠標點擊事件,當鼠標點擊時退出項目,主要代碼:getSendDataPackage()方法中得到數(shù)據(jù)發(fā)送數(shù)據(jù)的長度,主要代碼: public JTextField getTf3(String value) tf3 = new JTextField(value);tf3.setEditable(false);tf3.setBounds(300,230,150,20);return tf3;public JButton getJb1(String name) jb1=new JButton(name); /給按鈕添加鼠標點擊事件jb1.addM

30、ouseListener(new MouseAdapter() public void mouseClicked(MouseEvent arg0) System.exit(0); );jb1.setBounds(160,300,100,20);return jb1;public JButton getJb(String name) jb=new JButton(name); jb.setEnabled(false);jb.setBounds(40,300,100,20);return jb;public Long getSendDataPackage() return (long)(messa

31、ge.length();滁州學院本科課程設計14 / 26setSendDataPackage()方法中設置長度,主要代碼:getJb2()方法中為 【打開端口 】添加鼠標點擊事件。當鼠標點擊時,設置【發(fā)送】按鈕可用,并且為 【發(fā)送】按鈕添加鼠標點擊事件。當點擊鼠標時,如果內容為空,則不允許發(fā)送。如果內容不為空,則調用客戶端發(fā)送程序,想服務端發(fā)送輸入的內容,當接收到服務器端發(fā)來的確認信息時,修改【發(fā)送的數(shù)據(jù)包 】 、 【接收的數(shù)據(jù)包 】 、 【丟失的數(shù)據(jù)包 】數(shù)據(jù)。同時為文本輸入區(qū)添加 enter 事件,做以上同樣的邏輯處理,主要代碼:public JButton getJb2(String

32、name) jb2=new JButton(name); /給按鈕添加鼠標點擊事件jb2.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent arg0) /String port = tf3.getText(); try JOptionPane.showMessageDialog(null,端口打開成功!); jb.setEnabled(true); /給按鈕添加鼠標點擊事件jb.addMouseListener(new MouseAdapter() public void mouseClicked(M

33、ouseEvent arg0) String value = text1.getText().trim(); if(value.equals() JOptionPane.showMessageDialog(null,消息不能為空!); return; message = value; value=value+n; int length = (message.length()%10)!=0?(int)(message.length()*(1-diebaoLv)+1):(int)(message.length()*(1-diebaoLv); value = value.substring(mess

34、age.length()-length); text.append(發(fā)送內容:+value); text1.setText();tf2.setText(String.valueOf(int)(message.length()* diebaoLv); /將丟失的數(shù)據(jù)包個數(shù)顯示到頁面上 public void keyTyped(KeyEvent e) public void keyPressed(KeyEvent e) ); catch(NumberFormatException e) JOptionPane.showMessageDialog(null,請輸入正確的端口格式!);public v

35、oid setSendDataPackage(Long sendDataPackage) this.sendDataPackage = sendDataPackage;滁州學院本科課程設計15 / 26在 Eclipse 里 src 文件夾下的 com.think.udp.client 包中新建一個UDPClient.java,包含 sendMessage ()、setSoTimeout()方法。sendMessage ()方法中將數(shù)據(jù)發(fā)送到服務器,并且接收服務器端的確認信息,主要代碼: );jb2.setBounds(280,300,100,20);return jb2;public sta

36、tic void sendMessage(String content)UDPClient udpClient = new UDPClient();InetAddress address=null;UDP udp = new UDP();try dSocket = new DatagramSocket();address = InetAddress.getLocalHost(); catch (SocketException e) e.printStackTrace();catch (UnknownHostException e) e.printStackTrace();byte send =

37、 content.getBytes(); /發(fā)送的消息DatagramPacket sendPacket = new DatagramPacket(send,(int)(content.getBytes().length* udp.diebaoLv),address,Constant.PORT);byte receive = new byte10; /接受服務器發(fā)過來的消息DatagramPacket receivePacket = new DatagramPacket(receive,receive.length);try dSocket.send(sendPacket); catch (I

38、OException e) JOptionPane.showMessageDialog(null,向服務器發(fā)送消息失??!);滁州學院本科課程設計16 / 26setSoTimeout ()方法中實現(xiàn)了設置客戶端等待服務器端的時間。如果在設定的時間范圍之內接收不到服務端的確認信息,則服務器連接超時,主要代碼:設置前臺頁面的底部的按鈕,主要代碼:功能: 在 Eclipse 里 src 文件夾下的 com.think.udp.server 包中新建一個UDPServer.java,包含 clientThread ()、run()方法。clientThread ()方法中實現(xiàn)了讓主程序響應客戶端, 啟

39、動一個 新線程專門通知客戶端已經收到消息 ,主要代碼:public final void setSoTimeout(final int timeOut) throws SocketExceptiondSocket.setSoTimeout(timeOut); try udpClient.setSoTimeout(Constant.TIME_OUT);dSocket.receive(receivePacket);udp.receiveDataPackage+;String str = new String(receive);System.out.println(服務器返回的消息:+str); c

40、atch (IOException e) JOptionPane.showMessageDialog(null,服務器連接超時,請檢查服務器是否正常連接!);finallydSocket.close();滁州學院本科課程設計17 / 26run()方法里面的內容是處理邏輯,這是線程都有的方法,主要代碼:在 Eclipse 里 src 文件夾下的 com.think.udp.util 包中新建一個Constant.java。Constant.java 代碼如下:class clientThread extends Threadprivate DatagramSocket ds;private D

41、atagramPacket dReceive;private String message;private int number=0;public clientThread() public clientThread(DatagramSocket ds,DatagramPacket dReceive,int number,String message) this.ds = ds;this.dReceive = dReceive;this.number = number;this.message = message;public void run()InetAddress address = d

42、Receive.getAddress();int clinPort = dReceive.getPort();System.out.print(接收到客戶端第【+number+】次發(fā)來的消息:+message);DatagramPacket dSend = new DatagramPacket(SUCCESS!.getBytes(), SUCCESS!.getBytes().length, address, clinPort);try ds.send(dSend); catch (IOException e) e.printStackTrace();package com.think.udp.

43、util;public class Constant public static int BYTE_SIZE=10000; /字節(jié)數(shù)組長度public static int TIME_OUT=2000; /服務器連接時間設置為3秒public static int PORT=12345; /端口配置 滁州學院本科課程設計18 / 266程序設計結果界面演示程序設計結果界面演示6.16.1 設計結果演示設計結果演示步驟一:打開 Server.jar 服務器,運行 UdpFrame.java 程序,桌面彈出 My UDP 協(xié)議接收發(fā)送數(shù)據(jù)包程序界面。如圖 UDP1。圖 UDP1步驟二:首先點擊“打

44、開端口”按鈕,確認端口打開,并且“發(fā)送”按鈕為黑色狀態(tài)。如圖 UDP2 和圖 UDP3。滁州學院本科課程設計19 / 26圖 UDP2圖 UDP3步驟三:在不丟包的情況下,如“1234567” ,點擊“發(fā)送” ,注意“發(fā)送的數(shù)據(jù)包” , “接收的數(shù)據(jù)包” , “丟失的數(shù)據(jù)包”的數(shù)目。如圖 UDP4,UDP5滁州學院本科課程設計20 / 26圖 UDP4圖 UDP5步驟四; 再次發(fā)送不同類型字符,如“My UDP”,點擊“發(fā)送” ,確認三個包得數(shù)量,如圖UDP7,UDP8滁州學院本科課程設計21 / 26圖 UDP6圖 UDP7步驟五:丟失數(shù)據(jù)包情況:如“1234567890123” ,點擊“發(fā)

45、送” ,觀察“丟失的數(shù)據(jù)包”數(shù)目。如圖 UDP9,UDP10.滁州學院本科課程設計22 / 26圖 UDP8圖 UDP9傳輸結束后,退出軟件即可。滁州學院本科課程設計23 / 266.26.2 項目運行說明項目運行說明(1) 首先把 service.jar 包雙擊啟動服務器端(2) 打開 Eclipcs 軟件把 Message 整個文件夾導入工程(3) 運行 UdpFrame.java 出現(xiàn)界面(4) 在界面的文本框中輸入一定的信息,測試項目的功能7課程設計總結與體會課程設計總結與體會7.17.1 總結總結從 11 月 15 日到 12 月 8 日,我們進行了為期兩周的課程設計。通過這次課程設計,我拓寬了知識面,鍛煉了能力,綜合素質得到較大提高。安排課程設計的基本目的,在于通過理論與實際的結合、人與人的溝通,進一步提高綜合能力。尤其是觀察、分析和解決問題的實際工作能力,以便培養(yǎng)成為能夠主動適應社會主義現(xiàn)代

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論