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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Java網(wǎng)絡(luò)編程之傳輸控制協(xié)議(二)

2019-11-18 10:46:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  四、Socket類
  
  Socket類表現(xiàn)了客戶端套接字,它是屬于一臺(tái)或兩臺(tái)計(jì)算機(jī)的兩個(gè)TCP通訊端口之間的通訊通道。端口可以連接到本地系統(tǒng)的另一個(gè)端口,這樣可以避免使用另一臺(tái)計(jì)算機(jī),但是大多數(shù)網(wǎng)絡(luò)軟件將使用兩臺(tái)計(jì)算機(jī)。但是TCP套接字不能與兩臺(tái)以上的計(jì)算機(jī)通訊。假如需要這種功能,客戶端應(yīng)用程序必須建立多個(gè)套接字連接,每臺(tái)計(jì)算機(jī)一個(gè)套接字。
  
  構(gòu)造函數(shù)
  
  java.net.Socket類有幾個(gè)構(gòu)造函數(shù)。其中兩個(gè)構(gòu)造函數(shù)答應(yīng)使用布爾型參數(shù)指定是否使用UDP或TCP套接字,我們不贊成使用它們。這兒沒(méi)有使用這兩個(gè)構(gòu)造函數(shù),并且沒(méi)有列舉在此處--假如需要UDP功能,請(qǐng)使用DatagramSocket。
  
  try
  {
  // 連接到指定的主機(jī)和端口
  Socket mySocket = new Socket ( "www.awl.com", 80);
  
  // ......
  }
  catch (Exception e)
  {
  System.err.PRintln ("Err - " + e);
  }
  
  但是還有很多構(gòu)造函數(shù)可以用于不同的情形。除非非凡指出,所有的構(gòu)造函數(shù)都是公共的。
  
  · protected Socket ()-使用當(dāng)前套接字產(chǎn)生組件提供的默認(rèn)實(shí)現(xiàn)建立不連接的套接字。開(kāi)發(fā)者一般不應(yīng)該使用這個(gè)方法,因?yàn)樗淮饝?yīng)指定主機(jī)名稱和端口。
  
  · Socket (InetAddress address, int port)產(chǎn)生 java.io.IOException異常。
  
  · java.lang.SecurityException-建立連接到指定的ip地址和端口的套接字。假如不能建立連接,或連接到主機(jī)違反了安全性約束條件(例如某個(gè)小的服務(wù)程序試圖連接到某臺(tái)計(jì)算機(jī)而不是載入它的計(jì)算機(jī)時(shí)),就產(chǎn)生這種異常。
  
  · Socket (InetAddress address, int port, InetAddress localAddress, int localPort)產(chǎn)生java.io.IOException、java.lang.SecurityException異常-建立連接到指定的地址和端口的套接字,并把它綁定到特定的本地地址和本地端口。默認(rèn)情況下,使用一個(gè)自由(空)的端口,但是在多地址主機(jī)環(huán)境(例如本地主機(jī)有兩個(gè)或多個(gè)的計(jì)算機(jī))中,該方法也答應(yīng)你指定一個(gè)特定的端口號(hào)、地址。
  
  · protected Socket (SocketImpl implementation)--使用特定的套接字的實(shí)現(xiàn)(implementation)建立未連接的套接字。通常情況下開(kāi)發(fā)者不應(yīng)該使用這個(gè)方法,因?yàn)樗饝?yīng)指定主機(jī)名稱和端口。
  
  · Socket (String host, int port)產(chǎn)生java.net.UnknownHostException、java.io.IOException、java.lang.SecurityException異常--建立連接到特定主機(jī)和端口的套接字。這個(gè)方法答應(yīng)指定一個(gè)字符串而不是一個(gè)InetAddress。假如指定的主機(jī)名稱不能夠解析,就不能建立連接,假如違反了安全性約束條件就產(chǎn)生異常。
  
  · Socket (String host, int port, InetAddress localAddress, int localPort)產(chǎn)生java.net.UnknownHostException、java.io.IOException、java.lang.SecurityException異常--建立連接到特定主機(jī)和端口的套接字,并綁定到特定的本地端口和地址。它答應(yīng)指定字符串形式的主機(jī)名稱,而不是指定InetAddress實(shí)例,同時(shí)它答應(yīng)指定一個(gè)將綁定的本地地址和端口。這些本地參數(shù)對(duì)于多地址主機(jī)(假如可以通過(guò)兩個(gè)或更多IP地址訪問(wèn)的計(jì)算機(jī))是有用的。假如主機(jī)名稱不能解析,就不能建立連接,假如違反了安全性約束條件會(huì)產(chǎn)生異常。
  
  1、建立套接字
  
  在正常環(huán)境下,建立套接字的時(shí)候它就連接了某臺(tái)計(jì)算機(jī)和端口。盡管有一個(gè)空的構(gòu)造函數(shù),它不需要主機(jī)名稱或端口,但是它是受保護(hù)的(protected),在正常的應(yīng)用程序中不能夠調(diào)用它。此外,不存在用于在以后指定這些細(xì)節(jié)信息的connect()方法,因此在正常的環(huán)境下建立套接字的時(shí)候就應(yīng)該連接了。假如網(wǎng)絡(luò)是好的,在建立連接的時(shí)候,調(diào)用套接字構(gòu)造函數(shù)將立即返回,但是假如遠(yuǎn)程計(jì)算機(jī)沒(méi)有響應(yīng),構(gòu)造函數(shù)方法可能會(huì)阻塞一段時(shí)間。這是隨著系統(tǒng)的不同而不同的,它依靠于多種因素,例如正在使用的操作系統(tǒng)和默認(rèn)的網(wǎng)絡(luò)超時(shí)設(shè)置(例如本地局域網(wǎng)中的一些計(jì)算機(jī)一般比Internet上的計(jì)算機(jī)響應(yīng)得快)。你甚至不能肯定套接字將阻塞多長(zhǎng)的時(shí)間,但是這是非正常的行為,并且它不會(huì)頻繁出現(xiàn)。即使如此,在要害事務(wù)系統(tǒng)中把此類調(diào)用放在第二個(gè)線程中或許更合適,這樣可以防止應(yīng)用程序停止。
  
  注重
  
  在較低的層次,套接字是由套接字產(chǎn)生組件(socket factory)產(chǎn)生的,它是一個(gè)負(fù)責(zé)建立適當(dāng)?shù)奶捉幼謱?shí)現(xiàn)的非凡的類。在正常環(huán)境下,將會(huì)產(chǎn)生標(biāo)準(zhǔn)的java.net.Socket,但是在一些非凡的情形中,例如使用自定義套接字的非凡的網(wǎng)絡(luò)環(huán)境(例如通過(guò)使用非凡的代理服務(wù)器穿透防火墻),套接字產(chǎn)生組件實(shí)際上可能返回一個(gè)套接字子類(subclass)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 景谷| 沧源| 鄢陵县| 孟村| 桐柏县| 项城市| 鲁甸县| 张掖市| 大埔区| 通江县| 海门市| 津南区| 东明县| 房山区| 鹰潭市| 万盛区| 汾阳市| 天气| 中牟县| 阿尔山市| 根河市| 扎鲁特旗| 莫力| 通榆县| 纳雍县| 绥滨县| 乡宁县| 伊川县| 上林县| 新泰市| 宣汉县| 永和县| 天祝| 花垣县| 朔州市| 灯塔市| 松原市| 墨玉县| 蓝山县| 青冈县| 象州县|