国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

Java與TCP

2019-11-18 14:38:36
字體:
來源:轉載
供稿:網友

  傳輸控制協議是一種基于流的網絡通訊方法,它與其它的任何協議都有很大的不同。本文討論TCP流以及在java中怎樣操作它。

  一、概述

  TCP提供的網絡通訊接口與用戶數據報協議(UDP)截然不同。TCP的特性使網絡編程很具魅力,而且它刪除了UDP的很多干擾部分(例如數據包的排序和丟失),簡化了網絡通訊。UDP關心的是數據包的傳輸,而TCP關注的是建立網絡連接,并在網絡連接中發送和接收字節流。

數據包可以通過網絡用多種方法發送,并且它們到達的時間可能不同。這有利于性能的提高和程序的健壯性,因為單個包的丟失不一定干擾其它包的傳輸。但是,這樣的系統使程序員必須作更多的工作,他們必須保證數據的送達(delivery)。TCP通過對發送和次序的保證消除了這些額外的工作,為客戶端和支持兩路(two-way)通訊的服務器之間提供了可靠的字節通訊流。它在兩臺計算機之間建立了"虛擬連接",可以通過虛擬連接發送數據流。


圖1:TCP建立虛擬連接傳輸數據

  TCP使用更低層的(lower-level)的ip通訊協議在兩臺計算機之間建立連接。這種連接提供了一個答應字節流發送和接收的接口,并且采用透明的方式把數據轉換為IP數據報。數據報(datagram)的問題之一是不能保證數據包到達目的地。TCP解決了這個問題,它提供了有保證的數據字節的送達。當然,網絡錯誤影響了送達也是可能的,但是TCP通過類似重新發送數據包解決了這種實現的問題,并且只在情況很嚴重(例如沒有到網絡主機的路由或連接丟失了)的時候才提醒程序員。

 四、Socket類

  Socket類表現了客戶端套接字,它是屬于一臺或兩臺計算機的兩個TCP通訊端口之間的通訊通道。端口可以連接到本地系統的另一個端口,這樣可以避免使用另一臺計算機,但是大多數網絡軟件將使用兩臺計算機。但是TCP套接字不能與兩臺以上的計算機通訊。假如需要這種功能,客戶端應用程序必須建立多個套接字連接,每臺計算機一個套接字。

構造函數

  java.net.Socket類有幾個構造函數。其中兩個構造函數答應使用布爾型參數指定是否使用UDP或TCP套接字,我們不贊成使用它們。這兒沒有使用這兩個構造函數,并且沒有列舉在此處--假如需要UDP功能,請使用DatagramSocket。

try
{
// 連接到指定的主機和端口
Socket mySocket = new Socket ( "www.awl.com", 80);
// ......
}
catch (Exception e)
{
System.err.PRintln ("Err - " + e);
}

  但是還有很多構造函數可以用于不同的情形。除非非凡指出,所有的構造函數都是公共的。

  · protected Socket ()-使用當前套接字產生組件提供的默認實現建立不連接的套接字。開發者一般不應該使用這個方法,因為它不答應指定主機名稱和端口。

  · Socket (InetAddress address, int port)產生 java.io.IOException異常。

  · java.lang.SecurityException-建立連接到指定的IP地址和端口的套接字。假如不能建立連接,或連接到主機違反了安全性約束條件(例如某個小的服務程序試圖連接到某臺計算機而不是載入它的計算機時),就產生這種異常。

  · Socket (InetAddress address, int port, InetAddress localAddress, int localPort)產生java.io.IOException、java.lang.SecurityException異常-建立連接到指定的地址和端口的套接字,并把它綁定到特定的本地地址和本地端口。默認情況下,使用一個自由(空)的端口,但是在多地址主機環境(例如本地主機有兩個或多個的計算機)中,該方法也答應你指定一個特定的端口號、地址。

  · protected Socket (SocketImpl implementation)--使用特定的套接字的實現(implementation)建立未連接的套接字。通常情況下開發者不應該使用這個方法,因為它答應指定主機名稱和端口。

  · Socket (String host, int port)產生java.net.UnknownHostException、java.io.IOException、java.lang.SecurityException異常--建立連接到特定主機和端口的套接字。這個方法答應指定一個字符串而不是一個InetAddress。假如指定的主機名稱不能夠解析,就不能建立連接,假如違反了安全性約束條件就產生異常。

  · Socket (String host, int port, InetAddress localAddress, int localPort)產生java.net.UnknownHostException、java.io.IOException、java.lang.SecurityException異常--建立連接到特定主機和端口的套接字,并綁定到特定的本地端口和地址。它答應指定字符串形式的主機名稱,而不是指定InetAddress實例,同時它答應指定一個將綁定的本地地址和端口。這些本地參數對于多地址主機(假如可以通過兩個或更多IP地址訪問的計算機)是有用的。假如主機名稱不能解析,就不能建立連接,假如違反了安全性約束條件會產生異常。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 抚顺县| 盐边县| 菏泽市| 临朐县| 金堂县| 汕头市| 东山县| 富民县| 库车县| 文安县| 金阳县| 法库县| 甘泉县| 改则县| 阿克苏市| 中牟县| 仁化县| 金湖县| 大名县| 佛教| 罗江县| 吉木萨尔县| 修文县| 潜山县| 靖边县| 健康| 香格里拉县| 恩施市| 石棉县| 博兴县| 资兴市| 渭源县| 普安县| 新乡县| 滨州市| 中宁县| 枣阳市| 亚东县| 金沙县| 威宁| 宁武县|