<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無為

    無為則可為,無為則至深!

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
    [摘要]

        本文介紹了網絡通訊中通用的傳輸控制協議(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


    凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
    、轉載請注明來處和原文作者。非常感謝。

    posted on 2005-12-14 13:20 草兒 閱讀(247) 評論(0)  編輯  收藏 所屬分類: Java編程經驗談
    主站蜘蛛池模板: 亚洲成av人片在线观看无码不卡| 在线A级毛片无码免费真人| 久久夜色精品国产亚洲av| 国产亚洲精品美女2020久久| 婷婷精品国产亚洲AV麻豆不片| 日韩在线观看免费| 免费人成视频x8x8入口| 羞羞视频免费网站含羞草| 国产区卡一卡二卡三乱码免费| 久久精品国产亚洲AV电影网| 日韩a级毛片免费观看| 亚洲av中文无码乱人伦在线r▽| 亚洲中文字幕久久久一区| 91视频免费观看高清观看完整| 免费H网站在线观看的| 亚洲成av人片在线看片| 无码乱肉视频免费大全合集| 亚洲av午夜精品无码专区| 毛片免费观看的视频在线| 亚洲avav天堂av在线网毛片| 免费亚洲视频在线观看| 91免费在线视频| 久久精品国产亚洲AV久| 免费看片A级毛片免费看| 免费人成在线观看播放a| 亚洲色自偷自拍另类小说| 亚洲av无码日韩av无码网站冲| 啊v在线免费观看| 华人在线精品免费观看| 亚洲精品电影天堂网| 永久黄网站色视频免费| 亚洲高清免费视频| 亚洲高清视频免费| 国产女高清在线看免费观看| 亚洲暴爽av人人爽日日碰| 亚洲国产精品狼友中文久久久| 美女视频黄的免费视频网页| 久久久久亚洲国产| 成人男女网18免费视频| 一级做受视频免费是看美女| 亚洲第一区在线观看|