Java通訊端編程(上)(1)

來源:互聯網
上載者:User
用Java開發網路軟體非常方便和強大,Java的這種力量來源於他專屬的一套強大的用於網路的 API,這些API是一系列的類和介面,均位於包java.net和javax.net中。在這篇文章中我們將介紹通訊端(Socket)慨念,同時以執行個體說明如何使用Network API操縱通訊端,在完成本文後,你就可以編寫網路低端通訊軟體。
  什麼是通訊端(Socket)?
  Network API是典型的用於基於TCP/IP網路Java程式與其他程式通訊,Network API依靠Socket進行通訊。Socket可以看成在兩個程式進行通訊串連中的一個端點,一個程式將一段資訊寫入Socket中,該Socket將這段資訊發送給另外一個Socket中,使這段資訊能傳送到其他程式中。如圖1
  我們來分析一下圖1,Host A上的程式A將一段資訊寫入Socket中,Socket的內容被Host A的網路管理軟體訪問,並將這段資訊通過Host A的網路介面卡發送到Host B,Host B的網路介面卡接收到這段資訊後,傳送給Host B的網路管理軟體,網路管理軟體將這段資訊儲存在Host B的Socket中,然後程式B才能在Socket中閱讀這段資訊。
  假設在圖1的網路中添加第三個主機Host C,那麼Host A怎麼知道資訊被正確傳送到Host B而不是被傳送到Host C中了呢?基於TCP/IP網路中的每一個主機均被賦予了一個唯一的IP地址,IP地址是一個32位的不帶正負號的整數,由於沒有轉變成二進位,因此通常以小數點分隔,如:198.163.227.6,正如所見IP地址均由四個部分組成,每個部分的範圍都是0-255,以表示8位地址。
  值得注意的是IP地址都是32位地址,這是IP協議版本4(簡稱Ipv4)規定的,目前由於IPv4地址已近耗盡,所以IPv6地址正逐漸代替Ipv4地址,Ipv6地址則是128位不帶正負號的整數。
  假設第二個程式被加入圖1的網路的Host B中,那麼由Host A傳來的資訊如何能被正確的傳給程式B而不是傳給新加入的程式呢?這是因為每一個基於TCP/IP網路通訊的程式都被賦予了唯一的連接埠和連接埠號碼,連接埠是一個資訊緩衝區,用於保留Socket中的輸入/輸出資訊,連接埠號碼是一個16位不帶正負號的整數,範圍是0-65535,以區別主機上的每一個程式(連接埠號碼就像房屋中的房間號),低於256的短口號保留給標準應用程式,比如pop3的連接埠號碼就是110,每一個通訊端都組合進了IP地址、連接埠、連接埠號碼,這樣形成的整體就可以區別每一個通訊端t,下面我們就來談談兩種通訊端:流通訊端和自定址資料通訊端。
  流通訊端(Stream Socket)
  無論何時,在兩個網路應用程式之間發送和接收資訊時都需要建立一個可靠的串連,流通訊端依靠TCP協議來保證資訊正確到達目的地,實際上,IP包有可能在網路中丟失或者在傳送過程中發生錯誤,任何一種情況發生,作為接受方的 TCP將聯絡發送方TCP重新發送這個IP包。這就是所謂的在兩個流通訊端之間建立可靠的串連。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.