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

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

Merlin 的魔力:Java 聯網增強技術

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

  隨著 Merlin 的發布,java.net 包發生了很大的變化。不僅添加了六個類和三個異常,而且現有的類中有許多都進行了更改以支持額外的功能(比如改進 URL 編碼和解碼)。在本文中,John Zukowski 向您說明了用 Java 技術進行聯網有什么新鮮和不同之處,其中包括 J2SE 1.4 中最新的聯網功能:ipv6 支持、URI、網絡接口、安全套接字和非綁定套接字。請在附帶的論壇中與作者和其他讀者一起分享您有關本文的心得體會(您也可以點擊文章頂部或底部的討論來訪問論壇)。
  
  Java 編程中的聯網包括了定位和識別資源的能力以及通過 TCP 和 UDP 連接進行通信的能力。首先,您需要識別具有象 www.ibm.com 這樣名稱的資源,然后打開到該資源的連接,最后在您自己和連接的另一端之間發送信息包。由于安全性原因,可能會包括其它任務,但是整個過程是一樣的。對于 Java 平臺,會在 java.net 包中找到支持這些操作的類。從 Java 編程的早期到現在,這些操作中大多數都未曾發生太大的變化。但是,隨著 Merlin 的發展,這些基本操作中有些已經作了改進,以支持有價值的新功能。在本文中,我們將研究五個此類功能:IPv6 支持、URI、網絡接口、非綁定套接字和安全套接字。
  
  對 IPv6 地址的支持
  首先讓我們研究一下對下一代因特網協議 V6(Internet PRotocol V6,IPv6)尋址體系結構的新支持。借助于 InetAddress 的兩個新子類(Inet4Address 和 Inet6Address),您能夠與基于 TCP 和 UDP 的應用程序進行連接。Inet4Address 支持大多數機器所支持的較舊的(而且通常是唯一的)IP 尋址樣式,localhost 的格式為 127.0.0.1。RFC2373(請參閱參考資料)中所定義的新尋址方案提供了一種用冒號隔開的格式,其中 0:0:0:0:0:0:0:1 是與 127.0.0.1 等價的回送地址。新的類答應應用程序支持一種或這兩種尋址方案。
  
  對 IPv6 的支持取決于底層平臺是否支持它,Solaris 8 和更高版本,以及 linux 2.1.2 和更高(RedHat 6.1+)版本都支持 IPv6,而 Microsoft Windows 并不支持它(Microsoft 的 Window 2000 實現是個有限的實現)。希望 J2SE 1.4 的 Windows 版本以后能支持 IPv6。
  
  熟悉統一資源標識符
  java.net 包現已包括了統一資源標識符(uniform resource identifier,URI)類。可將 URI 看作是幕后沒有協議處理程序的統一資源定位符(uniform resource locator,URL)。通常,URL 看上去象 http://www.ibm.com。為了使 Java 語言運行時理解 URL,它需要知道該怎么處理以 http: 開頭的信息。以前,假如您提出新協議(例如,象 jdbc:database),那么若沒有協議處理程序,則您不能將 jdbc:database 字符串作為 URL 處理。相反,您不得不嚴格地將它作為字符串處理,這正是 JDBC 現在所做的。
  
  URI 的典型格式是:[scheme:][//authority][path][?query][#fragment],其中 authority 通常就是主機名。但是,它還可以包括用戶登錄信息和端口:[userInfo@]host[:port]。URI 類自身提供了一系列的 getter 方法,以便了解 URI 各個特定的部分。在您先前傳遞看上去象 URL 的字符串(但這僅為了描述 URL 而非使用它)的地方,您應當使用該類。
  
  用 NetworkInterface 列出網絡連接
  您是否曾經想知道哪個聯網接口是可用的,但是在不回復到本機代碼的情況下又不知道該如何詢問呢?通常,連接至因特網的大多數機器中有兩個連接:到其自身的本地循環和到其本地服務供給商的連接。但是,有些機器是多宿主的。它們有多個網卡,每個網卡都有一個到因特網的獨立連接并且都有自己的名稱和地址。有了這個新的 NetworkInterface 接口,您就可以在向外發送多點廣播數據報時指定使用哪個網卡,或查看網絡連接是否正常。清單 1 演示了該類的用法:
  
  清單 1. 列出網絡接口 import java.net.*;
  import java.util.Enumeration;
  public class Nets {
   public static void main(String args[]) throws SocketException {
    Enumeration enum = NetworkInterface.getNetworkInterfaces();
    while (enum.hasMoreElements()) {
     NetworkInterface net = (NetworkInterface)enum.nextElement();
     System.out.println(
      "Names: " + net.getName() + " / " + net.getDisplayName());
     Enumeration enum2 = net.getInetAddresses();
     while (enum2.hasMoreElements()) {
      InetAddress address = (InetAddress)enum2.nextElement();
      System.out.println("/tAddress: " + address.getHostAddress());
     }
    }
   }
  }
  
  您運行該程序所得的結果肯定是不同的。清單 2 包括了您想看到的輸出樣本:
  
  清單 2. 清單 1 的樣本結果 Names: lo / MS TCP Loopback interface
      Address: 127.0.0.1
  Names: eth0 / 3Com EtherLink PCI
      Address: 192.168.0.109
  
  對未連接套接字和非綁定套接字的支持
  通常,象在套接字之間進行讀寫之類的操作都是阻塞操作。在操作完成之前,調用線程都不能繼續運行。在 Merlin 新 I/O(NIO)類的幫助下,聯網類現在可以是非阻塞型的。無論哪一種情況(阻塞或非阻塞),新的 InetSocketAddress 和 SocketAddress 類都答應您打開到主機和端口的連接,然后在真正連接到主機之前為該連接設置一些選項。清單 3 顯示了基本的操作序列:
  
  清單 3. 連接至主機和端口 String hostname = ...;
  int port = ...;
  SocketAddress socketAddress =
   new InetSocketAddress(host, port);
  SocketChannel channel = SocketChannel.open();
  channel.configureBlocking(false);
  channel.connect(socketAddress);
  
  請在下個月的專欄文章中查閱有關 NIO 包的更多信息。
  
  用安全套接字進行連接
  Merlin 中有一個新的包:javax.net.ssl。該包提供了使用 Java 安全套接字擴展(Java Secure socket extension,JSSE)的安全通信,該擴展更常用的名稱是 https URL 的安全套接字層(secure sockets layer,SSL)支持。您不再需要用標準擴展庫來實現 SSL 支持 - 它現已隨核心庫一起提供。通過請求來自 SSLSocketFactory 的 SSL 套接字,您自動地就獲得了一個安全連接(假設您所連接的服務器支持該功能)。獲取套接字后,您不必再執行任何非凡的操作了 - 它會完全象普通套接字那樣進行通信。
  
  在清單 4 中,我們使用 SSL 來連接用戶指定的站點,或 Verisign,并獲取該站點的入口頁面??梢噪S意將輸出保存到文件中,以便查看。
  
  清單 4. 通過安全套接字進行連接 import java.io.*;
  import java.net.*;
  import javax.net.*;
  import javax.net.ssl.*;
  public class SslSample {
   static final int HTTPS_PORT = 443;
   public static void main(String args[]) throws IOException {
    String hostname;
    // If host not provided, connect to Verisign
    if (args.length == 0) {
     hostname = "www.verisign.com";
    } else {
     hostname = args[0];
    }
    // Get socket factory
    SocketFactory factory = SSLSocketFactory.getDefault();
    // Get socket from factory
    Socket socket = factory.createSocket(hostname, HTTPS_PORT);
    // Send request
    OutputStream os = socket.getOutputStream();
    PrintWriter pw = new PrintWriter(os);
    // Setup command
    String command = "GET / HTTP/1.0/r/n/r/n";
    pw.print(command);
    pw.flush();
    // Get response
    InputStream is = socket.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line;
    while ((line = br.readLine()) != null) {
     System.out.println(line);
    }
    pw.close();
    br.close();
    socket.close();
   }
  }
  
  還有一個 HttpsURLConnection 類,可以象 jave.net.URLConnection 那樣使用它。
  
  舊的類,新的技巧
  并不是所有的聯網增強技術都是在新的類(和包)中實現的。許多現有的類也得到了增強。有些功能主要是在后臺進行的,比如改進的 FTP 協議處理程序?,F在,Merlin 的功能和 RFC1738 和 RFC959 的功能(請參閱參考資料)匹配得更加緊密了,包括對被動方式的支持。另外,URLEncoder 和 URLDecoder 類都支持使用程序員指定的字符集進行編碼和解碼。HTTP 摘要認證支持也已經得到改進,并且 URLConnection 頭的處理已得到了增強,可以支持直接獲取和添加頭。
  
  結束語
  Merlin 給標準 Java 編程添加了許多功能。有些功能已經存在了一段時間了,但是現在才最終被合并進標準發行版。有些功能是新的,而其它的則被升級成現有的功能。隨著 Java 技術使用得越來越多,就越來越難跟上它不斷擴充的功能列表。有時候您需要沙里淘金,但請堅持尋找 - 它們早就等在那了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产91久久久久福利| 国产成人涩涩涩视频在线观看| 成人免费午夜电影| 欧美亚洲成人免费| 欧美黑人狂野猛交老妇| 2019中文字幕在线观看| 亚洲欧洲在线看| 国产精品久久中文| 日韩在线不卡视频| 国产成人精品电影| 日韩国产一区三区| xvideos成人免费中文版| 国产精品人成电影在线观看| 欧美日韩国产成人在线| 亚洲国产婷婷香蕉久久久久久| 亚洲精品美女在线观看| 国产手机视频精品| 欧美成人精品不卡视频在线观看| 欧美日韩一区二区免费视频| 性亚洲最疯狂xxxx高清| 日韩成人性视频| 亚洲三级免费看| 欧美极品少妇全裸体| 欧美日韩国产黄| www.亚洲男人天堂| 国产精品久久久久久久一区探花| 一区二区三区动漫| 欧美成人黄色小视频| 欧美尺度大的性做爰视频| 成人xxxx视频| 欧美亚洲国产日本| 精品国产福利在线| 亚洲欧美在线免费观看| 在线视频亚洲欧美| 一区二区三区精品99久久| 日本免费一区二区三区视频观看| 乱亲女秽乱长久久久| 亚洲欧美激情四射在线日| 日韩欧美中文免费| 国产美女久久精品| 亚洲热线99精品视频| 欧美高清视频在线播放| 国产偷亚洲偷欧美偷精品| 亚洲欧美日本另类| 国产午夜精品一区理论片飘花| 国产精品成人播放| 欧美精品电影免费在线观看| 国产美女精品免费电影| 欧美激情乱人伦| 国产精品人成电影| 国产精品三级久久久久久电影| 精品久久久一区二区| 国产精品免费久久久久影院| 日韩在线观看视频免费| 精品国产31久久久久久| 91在线中文字幕| 日韩av在线导航| 欧美电影免费观看| 丝袜美腿亚洲一区二区| 欧美成人精品影院| 国产视频一区在线| 日本欧美爱爱爱| 亚洲一区二区三区四区在线播放| 国产欧美精品va在线观看| 国产福利成人在线| 亚洲欧洲第一视频| 久久久久久有精品国产| 免费97视频在线精品国自产拍| 欧美日韩亚洲视频| 精品亚洲精品福利线在观看| 欧美性生交xxxxxdddd| 精品久久久久久国产| 国产香蕉一区二区三区在线视频| 米奇精品一区二区三区在线观看| 亚洲情综合五月天| 亚洲国产成人精品久久久国产成人一区| 美女黄色丝袜一区| 日韩精品亚洲精品| 亚洲淫片在线视频| 欧美黄色三级网站| 久久99精品视频一区97| 黄色一区二区三区| 亚洲精品自在久久| 日韩成人在线网站| 亚洲人高潮女人毛茸茸| 日韩美女中文字幕| 国产精品www色诱视频| 亚洲最新视频在线| 日韩一区二区三区国产| 久久免费视频在线观看| 福利精品视频在线| 久久色免费在线视频| 国产精品高潮呻吟久久av黑人| 青草热久免费精品视频| 4k岛国日韩精品**专区| 久久久国产精品免费| 欧美精品videofree1080p| 国产精品尤物福利片在线观看| 高跟丝袜一区二区三区| 亚洲国产精品一区二区久| 欧美日韩国产一区二区三区| 亚洲一区二区三区视频播放| 精品国产一区二区三区久久久狼| 青青在线视频一区二区三区| 91福利视频网| 亚洲japanese制服美女| 中文字幕日韩欧美精品在线观看| 久久久久久噜噜噜久久久精品| 国产精品观看在线亚洲人成网| 国产日韩在线看片| 久久精品国亚洲| 亚洲国产精品人久久电影| 亚洲一区二区在线| 久久色在线播放| 欧美日韩xxxxx| 精品视频www| www.日韩.com| 日韩激情片免费| 欧美电影在线免费观看网站| 国产这里只有精品| 亚洲国产精品99久久| 亚洲欧美在线x视频| 午夜精品一区二区三区在线播放| 岛国视频午夜一区免费在线观看| 久久影视电视剧免费网站| 国产精品国内视频| 亚洲欧美日韩在线一区| 国产做受69高潮| 国产97在线播放| 欧美性xxxx在线播放| 日韩黄在线观看| 日韩亚洲欧美中文在线| 久久久精品2019中文字幕神马| 亚洲在线第一页| 日韩电影网在线| 日韩av影片在线观看| 亚洲欧洲美洲在线综合| 久久久久久伊人| 成人a视频在线观看| 人人澡人人澡人人看欧美| 操91在线视频| 精品欧美激情精品一区| 国产亚洲精品美女久久久久| 欧美综合国产精品久久丁香| 亚洲精品久久久久久久久久久| 精品亚洲一区二区三区| 国产一区私人高清影院| 成人看片人aa| 国产成人一区二区三区| 精品国内亚洲在观看18黄| 日韩av免费看| 日韩福利伦理影院免费| 日韩福利视频在线观看| 欧美精品中文字幕一区| 欧美激情网友自拍| 久久久久久中文字幕| 久久久国产精品免费| 久久久久久亚洲| 国产亚洲成精品久久| 日韩视频免费在线观看| 亚洲福利在线视频| 欧美三级xxx| 精品国产欧美成人夜夜嗨| 精品呦交小u女在线|