亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

一個基于UDP數據廣播的局域網絡會議程序

2019-11-18 12:13:07
字體:
來源:轉載
供稿:網友

  本文介紹了網絡通訊中通用的傳輸控制協議(TCP)和用戶數據包協議(UDP),并 且利用java語言設計了一個簡單的基于UDP 數據廣播的局域網絡會議程序,展示了 在Java語言中進行UDP 數據發送和接收的一般步驟。由于Java語言卓越的跨平臺特 性,本系統能夠不加修改的運行在Windows, linux, Mac OS等一系列不同平臺上。
  介紹
  隨著網絡技術的普及,網絡會議在公司、企業和單位中的應用也越來越廣。一 個網絡會議系統通常包括一個服務器程序和一個客戶端程序。其中服務器端負責進 行用戶治理、信息交互以及表決統計;客戶端則實現收聽發言,公開發言,私下討 論、投票表決等功能。在一個網絡會議系統的設計和實現中,通常涉及到圖形用戶 界面設計,TCP/ip連接,UDP 數據廣播,多線程等一系列技術。本文通過一個簡單 示例程序,展示了在Java語言中進行UDP 數據發送和接收的一般步驟以及UDP 數據 廣播在局域網絡會議系統中的作用。
  
  TCP (Transmission Control PRotocol,傳輸控制協議) 是一種基于連接的通 訊協議。當兩臺計算機之間需要進行可靠的數據傳輸時,它們通過網絡建立起一個 穩定的連接,這種連接通常也被稱為數據鏈。與電話網絡相類似,這種數據鏈是點 對點的,通訊的雙方則通過這條數據鏈往返傳輸數據。在這條穩定的數據鏈的基礎 上,TCP 協議通過信息校驗能夠保證接收方所接收到的數據和發送方所發送的數據 在內容和順序上是完全一致的,從而實現了數據的可靠傳輸。
  
  UDP (User Datagram Protocol,用戶數據包協議)與TCP 協議之間的不同在于 UDP 不是一種基于穩定連接的通訊協議。UDP 協議將獨立的數據包從一臺計算機傳 輸到另外一臺計算機,但是并不保證接受方能夠接收到該數據包,也不保證接收方 所接收到的數據和發送方所發送的數據在內容和順序上是完全一致的。因此,UDP 協議更類似于普通郵政服務,寄信人不能夠保證所寄出去的信能夠被收信人及時收 到,后發出的信也許會比先發出的信更早到達。
  
  對于很多應用程序來說,在互相通訊的兩臺計算機之間保證一個可靠與穩定的 數據鏈是至關重要的。在這種情況下,就應該首先考慮使用TCP 協議在涼臺計算機 之間建立起TCP/IP連接。在HTTP (Hyper-Text Transfer Protocol,超級文本傳輸 協議)、FTP (File Transfer Protocol, 文件傳輸協議)以及TELNET 應用程序中, 均要求在通訊的雙方之間建立起穩定可靠的數據鏈,因此它們都使用了TCP 協議來 進行數據傳輸。
  
  在TCP 協議中,發送方和接收方必須交換額外的信息以保證接收方已經接收到 所發送的數據包并且所接收到的數據和發送方所發送的數據在內容和順序上是完全 一致的。這些額外的信息交換提高了數據傳輸的可靠度,但是也給網絡帶來了額外 的負擔,導致數據交換的延遲,從而降低了整個網絡的數據交換能力。對于某些對 實時性要求較高的應用程序來說,這樣的延遲有可能是不可接受的。例如一個毫秒 級的時鐘服務器按照一定的頻率向客戶機提供當時的時間數據,假如這些時間數據 在傳輸過程中受到了較大的延遲,這些過時的時間數據是完全沒有意義的,即使客 戶機準確無誤的接收到了這些數據。相反,假如客戶機所接收到的每一個數據包都 是實時的,那么即使客戶機錯過了一兩個數據包也是可以接受的,因為他總是可以 根據后面所接收到的數據包來對自己進行校正。因此,對于對實時性要求比較高但 是對傳輸可靠度要求比較低的應用程序來說,UDP 協議顯然是一個合適的選擇。
  
  在通用的以太網(Ehternet)構架下,計算機于計算機之間的數據交換都是通過 交換機來完成的。假如一份數據需要被傳送給多個接收者,在使用TCP/IP連接的情 況下,數據發送者需要向交換機發送N 個同樣的拷貝,而交換機則負責將這N 個拷 貝分發給所有的接收者;在使用UDP 數據廣播的情況下,數據發送者只需要向交換 機發送一個拷貝,交換機負責將這個信息制作N 個拷貝發送給所有的機器。在這種 情況下,使用TCP/IP連接會大大的增加網絡的負擔。在一個普通局域網絡中,可以 認為由于網絡狀況較差而造成數據丟失的可能性比較小,而利用UDP 數據廣播進行 數據交換能夠大幅度減輕網絡的負擔,因此設計一個基于UDP 數據廣播的局域網絡 會議系統式完全可行的。
  
  通常來說,一臺計算機只有一個物理界面與網絡相連接,所有的應用程序均通 過該物理界面從網絡接收數據或者將數據發送到網絡。由于一個網絡上同時存在多 臺計算機,并且一臺計算機上有可能同時存在多個應用程序需要與網絡進行數據交 換,我們通常使用IP和端口號來識別需要進行數據交換的計算機和應用程序。每臺 計算機由一個32位的IP地址來識別,在一個網絡中,每臺計算機的IP地址都是唯一 的,因此應用程序能夠根據IP地址來將數據發送到正確的計算機。每個需要與網絡 進行數據交換的應用程序均被系統分配一個16位的端口號,系統根據這個端口號將 從網絡接收到的數據轉發給相對應的應用程序。端口號的范圍是從0 到65535 ,其 中從0 到1023被系統所保留,主要是用來提供HTTP, FTP 以及TELNET等系統服務, 因此用戶自己的應用程序不應該試圖去使用小于1023的端口。
  
  Java語言的一個顯著優點就是它從語言的高度上提供了對網絡的支持,使得程 序員能夠很輕易的構建基于網絡的應用程序。在Java 1.3版的標準類庫java.net中 提供了5 個接口以及21個Java類,在這些接口和類的基礎上,程序員能夠輕易的實 現幾乎是所有的常見網絡應用。例如,ServerSocket能夠用來構建基于TCP/IP的服 務器程序,Socket能夠用來構建基于TCP/IP的客戶端程序,而DatagramPacket以及 DatagramSocket能夠用來構建基于UDP 的數據廣播程序。在java.net中的其他Java 庫能夠被用來實現域名解析、身份認證、安全許可等一系列功能。由于這些Java庫 的功能和具體用法等內容已經超出了本文的討論范圍,感愛好的讀者可以進一步參 考Java的文檔以及Sun 公司的Java Tutorial等資料。
  
  這個簡單的程序包括如下三個模塊:
  
  數據廣播與接收模塊-- Broadcast.java
  數據接收線程 -- Receiver.java
  圖形用戶界面 -- Chat.java
  
  程序設計
  數據廣播與接收模塊Broadcast.java是本示例程序的核心部分。該類包括一個 構造方法,一個數據發送方法和一個數據接收方法。為了使這個類能夠被更加廣泛 的應用到其它應用程序中,作者又添加了一個端口配置方法。
  
  在構造方法中,我們首先利用InetAddress 定義一個數據廣播組,同時構造一 個用于發送數據的DatagramSocket與一個用于接收數據的MulticastSocket。 在這 里我們使用230.0.0.1 來作為數據廣播組的標示符,雖然這個標示符與IP地址的格 式相同,但是它并不表示Internet上的一臺機器。此外,我們在端口配置方法中分 別指定1235端口和1236端口位數據發送和數據接收端口。假如把一個UDP 數據廣播 系統比喻成無線電廣播系統的話,數據廣播標示符可以被認為是波段,而數據接收 端口可以被認為是頻率。收音機用戶必須把收音機調整到相應的波段和頻率才能夠 接收到電臺信號,我們的UDP 數據接收程序也必須加入相對應的數據廣播組并且使 用正確的數據接收端口才能夠正確的接收到UDP 廣播數據。在構造方法中,我們利 用MulticastSocket 的構造函數指定數據接收端口(頻率),并利用其joinGroup 方 法指定數據廣播組(波段)。
  
  public Broadcast()
  {
  GetBroadcastPorts();
  try
  {
  // 構造數據廣播組標示符 (波段)
  BroadcastGroup = InetAddress.getByName("230.0.0.1");
  // 構造數據發送端口
  Sender = new DatagramSocket(ServerPort);
  // 構造數據接收端口 (頻率)
  Receiver = new MulticastSocket(ClientPort);
  // 指定數據接收端口的數據廣播組 (波段)
  Receiver.joinGroup(BroadcastGroup);
  } catch (Exception e) {}
  }
  
  在數據發送方法中,我們基于用戶所提供的數據以及數據廣播目標端口(頻率) 構造一個DatagramPacket數據包,然后利用發送數據的DatagramSocket的send方法將該數據包發送到局域網。與此相反,在數據接收方法中,我們首先構造一個空的 DatagramPacket數據包,然后利用接收數據的MulticastSocket的receive方法填充該數據包中的內容。為了避免由于數據包大小不同所造成的數據丟失等麻煩,我們特地將兩個數據包的大小設置成一樣的。
  
  // 數據發送方法
  public void SendData(String Msg)
  {
  byte[] b = new byte[1024];
  DatagramPacket packet;
  try
  {
  // 字節序列b 包括需要發送的數據
  b = Msg.getBytes();
  // 構造一個數據包,BroadcastGroup是數據廣播組標示符(波段),
  // ClientPort是數據廣播目標端口(頻率)。
  packet = new DatagramPacket(b, b.length, BroadcastGroup, ClientPort);
  // 發送數據包
  Sender.send(packet);
  } catch (Exception e) {}
  }
  
  // 數據接收方法
  public String ReceiveData()
  {
  byte[] b = new byte[1024];
  // 構造一個空的數據包
  DatagramPacket packet = new DatagramPacket(b, 1024);
  String InMsg;
  try
  {
  // 接收數據
  Receiver.receive(packet);
  } catch (IOException e) {}
  // 叢數據包中獲得接收到的數據
  b = packet.getData();
  InMsg = new String(b);
  return InMsg;
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品少妇v888av| 亚洲美女免费精品视频在线观看| 日韩大陆毛片av| 亚洲精品日韩av| 欧美成人全部免费| 中文字幕免费国产精品| 亚洲女人天堂成人av在线| 欧美成人精品在线视频| 亚洲精品一区av在线播放| 亚洲热线99精品视频| 国产精品爱啪在线线免费观看| 国产精品a久久久久久| 日韩专区中文字幕| 欧美激情高清视频| 日韩一区二区三区xxxx| 在线观看欧美日韩国产| 亚洲香蕉成人av网站在线观看| 亚洲欧美国产另类| 国产激情久久久久| 日韩欧美中文第一页| 午夜精品久久久久久久久久久久久| 国产香蕉精品视频一区二区三区| 久久精品国产99国产精品澳门| 亚洲精品小视频在线观看| 操人视频在线观看欧美| 久久久久久久av| 久久久久久久影视| 亚洲天堂av女优| 综合网中文字幕| 免费av在线一区| 亚洲精品视频久久| 日韩免费黄色av| 欧美激情亚洲视频| 欧洲精品久久久| 久久久亚洲国产| 国产成人avxxxxx在线看| 欧美成人在线影院| 亚洲女人天堂av| 久久精品一本久久99精品| 国产日韩在线精品av| 日韩中文字幕在线精品| 亚洲精品国产电影| 成人97在线观看视频| 日本19禁啪啪免费观看www| 性欧美亚洲xxxx乳在线观看| 国产精品欧美一区二区三区奶水| 欧美国产日韩一区| 在线观看日韩视频| 亚洲18私人小影院| 日韩黄色高清视频| 亚洲精品720p| 92版电视剧仙鹤神针在线观看| 国产在线观看精品一区二区三区| 国产男女猛烈无遮挡91| 国产精品久久久久久久久久三级| 亚洲第一天堂无码专区| 日本久久久a级免费| 欧美高清在线播放| 国产精品电影久久久久电影网| 欧美精品电影免费在线观看| 国产精品91免费在线| 91精品久久久久久| 午夜剧场成人观在线视频免费观看| 国产精品高潮呻吟久久av黑人| 国产精品久久久久免费a∨大胸| 亚洲精品久久久久中文字幕二区| 操91在线视频| 亚洲天堂色网站| 欧美精品电影免费在线观看| 国产精品久久久久久av福利软件| 国产精品美女999| 岛国精品视频在线播放| 成人在线视频网站| 在线观看亚洲视频| 黑人巨大精品欧美一区二区三区| 久久久久国色av免费观看性色| 欧美激情成人在线视频| 欧美一区三区三区高中清蜜桃| 国产精品www色诱视频| 日韩禁在线播放| 国产日韩精品综合网站| 中文字幕欧美国内| 国产成人91久久精品| 日韩av在线网站| 欧美色另类天堂2015| 欧美激情一区二区三级高清视频| 午夜精品免费视频| 欧美专区中文字幕| 91亚洲精品在线观看| 欧美日韩国产一区二区| 日韩中文视频免费在线观看| 国产精品第3页| 精品视频在线观看日韩| 久久久久久噜噜噜久久久精品| 亚洲精品av在线| 亚洲精品电影久久久| 亚洲男人天堂2023| 国产亚洲精品久久| 伊人久久久久久久久久久久久| 成人网在线免费观看| 亚洲成人激情在线观看| 成人黄色影片在线| 亚洲一区二区黄| 国产日韩精品综合网站| 中文字幕久热精品在线视频| 国产成人精品久久亚洲高清不卡| 国产一区私人高清影院| 亚洲欧洲日产国码av系列天堂| 色综合亚洲精品激情狠狠| 国产精品视频午夜| 91精品一区二区| 国产亚洲免费的视频看| 久久久国产精品一区| 久久精品国产亚洲7777| 亚洲美女性生活视频| 国产精品a久久久久久| 日韩在线中文视频| 亚洲国产成人91精品| 国产精品福利在线观看| 精品高清美女精品国产区| 亚洲国产成人一区| 久久激情视频久久| 一本色道久久综合狠狠躁篇怎么玩| 亚洲精品v天堂中文字幕| 亚洲黄色av女优在线观看| 上原亚衣av一区二区三区| 国产精品久久久久久久久粉嫩av| 欧美福利视频网站| 欧美成人免费一级人片100| 亚洲精品乱码久久久久久金桔影视| 日韩av第一页| 日本三级久久久| 国产精品人人做人人爽| 国内外成人免费激情在线视频| 国模gogo一区二区大胆私拍| 久久在线免费观看视频| 亚洲欧美色婷婷| 国产第一区电影| 国产精品美女久久久久av超清| 国产精品99久久久久久久久| 欧美成aaa人片在线观看蜜臀| 国自在线精品视频| 久久久999精品视频| 欧美成人剧情片在线观看| 亚洲国产精品va在线看黑人| 欧美专区中文字幕| 国产精品一二三在线| 另类视频在线观看| 中文字幕综合在线| xvideos成人免费中文版| 亚洲人成欧美中文字幕| 精品人伦一区二区三区蜜桃网站| 久热爱精品视频线路一| 91精品国产91久久久久| 在线观看国产欧美| 成人网在线免费看| 欧美色播在线播放| 91色视频在线观看| 亚洲国产欧美一区二区三区同亚洲| 亚洲精品v欧美精品v日韩精品| 911国产网站尤物在线观看| 国产精品美乳一区二区免费| 国产精品久久久久国产a级| 精品欧美激情精品一区|