麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Java聯(lián)網(wǎng)增強(qiáng)技術(shù)

2019-11-18 13:25:33
字體:
供稿:網(wǎng)友

  java聯(lián)網(wǎng)增強(qiáng)技術(shù)
  
         
  
  ——研究J2SE1.4中最新的聯(lián)網(wǎng)特姓
  
  作者:John Zukowski 本文選自:IBM DW中國 2003年05月20日
  
    隨著 Merlin 的發(fā)布,java.net 包發(fā)生了很大的變化。不僅添加了六個類和三個異常,而且現(xiàn)有的類中有許多都進(jìn)行了更改以支持額外的功能(比如改進(jìn) URL 編碼和解碼)。在本文中,John Zukowski 向您說明了用 Java 技術(shù)進(jìn)行聯(lián)網(wǎng)有什么新鮮和不同之處,其中包括 J2SE 1.4 中最新的聯(lián)網(wǎng)功能:ipv6 支持、URI、網(wǎng)絡(luò)接口、安全套接字和非綁定套接字。
  
    Java 編程中的聯(lián)網(wǎng)包括了定位和識別資源的能力以及通過 TCP 和 UDP 連接進(jìn)行通信的能力。首先,您需要識別具有象 www.ibm.com 這樣名稱的資源,然后打開到該資源的連接,最后在您自己和連接的另一端之間發(fā)送信息包。由于安全姓原因,可能會包括其它任務(wù),但是整個過程是一樣的。對于 Java 平臺,會在 java.net 包中找到支持這些操作的類。從 Java 編程的早期到現(xiàn)在,這些操作中大多數(shù)都未曾發(fā)生太大的變化。但是,隨著 Merlin 的發(fā)展,這些基本操作中有些已經(jīng)作了改進(jìn),以支持有價值的新功能。在本文中,我們將研究五個此類功能:IPv6 支持、URI、網(wǎng)絡(luò)接口、非綁定套接字和安全套接字。
  
  對 IPv6 地址的支持
  
    首先讓我們研究一下對下一代因特網(wǎng)協(xié)議 V6(Internet PRotocol V6,IPv6)尋址體系結(jié)構(gòu)的新支持。借助于 InetAddress 的兩個新子類(Inet4Address 和 Inet6Address),您能夠與基于 TCP 和 UDP 的應(yīng)用程序進(jìn)行連接。Inet4Address 支持大多數(shù)機(jī)器所支持的較舊的(而且通常是唯一的)IP 尋址樣式,localhost 的格式為 127.0.0.1。RFC2373(請參閱參考資料)中所定義的新尋址方案提供了一種用冒號隔開的格式,其中 0:0:0:0:0:0:0:1 是與 127.0.0.1 等價的回送地址。新的類答應(yīng)應(yīng)用程序支持一種或這兩種尋址方案。
  
    對 IPv6 的支持取決于底層平臺是否支持它,Solaris 8 和更高版本,以及 linux 2.1.2 和更高(RedHat 6.1+)版本都支持 IPv6,而 Microsoft Windows 并不支持它(Microsoft 的 Window 2000 實(shí)現(xiàn)是個有限的實(shí)現(xiàn))。希望 J2SE 1.4 的 Windows 版本以后能支持 IPv6。
  
    熟悉統(tǒng)一資源標(biāo)識符
  
    java.net 包現(xiàn)已包括了統(tǒng)一資源標(biāo)識符(uniform resource identifier,URI)類??蓪?URI 看作是幕后沒有協(xié)議處理程序的統(tǒng)一資源定位符(uniform resource locator,URL)。通常,URL 看上去象 http://www.ibm.com。為了使 Java 語言運(yùn)行時理解 URL,它需要知道該怎么處理以 http: 開頭的信息。以前,假如您提出新協(xié)議(例如,象 jdbc:database),那么若沒有協(xié)議處理程序,則您不能將 jdbc:database 字符串作為 URL 處理。相反,您不得不嚴(yán)格地將它作為字符串處理,這正是 JDBC 現(xiàn)在所做的。
  
    URI 的典型格式是:[scheme:][//authority][path][?query][#fragment],其中 authority 通常就是主機(jī)名。但是,它還可以包括用戶登錄信息和端口:[userInfo@]host[:port]。URI 類自身提供了一系列的 getter 方法,以便了解 URI 各個特定的部分。在您先前傳遞看上去象 URL 的字符串(但這僅為了描述 URL 而非使用它)的地方,您應(yīng)當(dāng)使用該類。
  
  用 NetworkInterface 列出網(wǎng)絡(luò)連接
  
    您是否曾經(jīng)想知道哪個聯(lián)網(wǎng)接口是可用的,但是在不回復(fù)到本機(jī)代碼的情況下又不知道該如何詢問呢?通常,連接至因特網(wǎng)的大多數(shù)機(jī)器中有兩個連接:到其自身的本地循環(huán)和到其本地服務(wù)供給商的連接。但是,有些機(jī)器是多宿主的。它們有多個網(wǎng)卡,每個網(wǎng)卡都有一個到因特網(wǎng)的獨(dú)立連接并且都有自己的名稱和地址。有了這個新的 NetworkInterface 接口,您就可以在向外發(fā)送多點(diǎn)廣播數(shù)據(jù)報時指定使用哪個網(wǎng)卡,或查看網(wǎng)絡(luò)連接是否正常。清單 1 演示了該類的用法:
  
  
  
  清單 1. 列出網(wǎng)絡(luò)接口 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());
  
  }
  
  }
  
  }
  
  }
  
  
  
    您運(yùn)行該程序所得的結(jié)果肯定是不同的。清單 2 包括了您想看到的輸出樣本:
  
  
  
    清單 2. 清單 1 的樣本結(jié)果 Names: lo / MS TCP Loopback interface
  
  Address: 127.0.0.1
  
  Names: eth0 / 3Com EtherLink PCI
  
  Address: 192.168.0.109
  
  
  
  對未連接套接字和非綁定套接字的支持
  
    通常,象在套接字之間進(jìn)行讀寫之類的操作都是阻塞操作。在操作完成之前,調(diào)用線程都不能繼續(xù)運(yùn)行。在 Merlin 新 I/O(NIO)類的幫助下,聯(lián)網(wǎng)類現(xiàn)在可以是非阻塞型的。無論哪一種情況(阻塞或非阻塞),新的 InetSocketAddress 和 SocketAddress 類都答應(yīng)您打開到主機(jī)和端口的連接,然后在真正連接到主機(jī)之前為該連接設(shè)置一些選項。清單 3 顯示了基本的操作序列:
  
  
  
  清單 3. 連接至主機(jī)和端口 String hostname = ...;
  
  int port = ...;
  
  SocketAddress socketAddress =
  
  new InetSocketAddress(host, port);
  
  SocketChannel channel = SocketChannel.open();
  
  channel.configureBlocking(false);
  
  channel.connect(socketAddress);
  
  
  
    請在下個月的專欄文章中查閱有關(guān) NIO 包的更多信息。
  
  用安全套接字進(jìn)行連接
  
    Merlin 中有一個新的包:javax.net.ssl。該包提供了使用 Java 安全套接字?jǐn)U展(Java Secure socket extension,JSSE)的安全通信,該擴(kuò)展更常用的名稱是 https URL 的安全套接字層(secure sockets layer,SSL)支持。您不再需要用標(biāo)準(zhǔn)擴(kuò)展庫來實(shí)現(xiàn) SSL 支持 - 它現(xiàn)已隨核心庫一起提供。通過請求來自 SSLSocketFactory 的 SSL 套接字,您自動地就獲得了一個安全連接(假設(shè)您所連接的服務(wù)器支持該功能)。獲取套接字后,您不必再執(zhí)行任何非凡的操作了 - 它會完全象普通套接字那樣進(jìn)行通信。
  
    在清單 4 中,我們使用 SSL 來連接用戶指定的站點(diǎn),或 Verisign,并獲取該站點(diǎn)的入口頁面??梢噪S意將輸出保存到文件中,以便查看。
  
  
  
  清單 4. 通過安全套接字進(jìn)行連接 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 那樣使用它。
  
  舊的類,新的技巧
  
    并不是所有的聯(lián)網(wǎng)增強(qiáng)技術(shù)都是在新的類(和包)中實(shí)現(xiàn)的。許多現(xiàn)有的類也得到了增強(qiáng)。有些功能主要是在后臺進(jìn)行的,比如改進(jìn)的 FTP 協(xié)議處理程序。現(xiàn)在,Merlin 的功能和 RFC1738 和 RFC959 的功能(請參閱參考資料)匹配得更加緊密了,包括對被動方式的支持。另外,URLEncoder 和 URLDecoder 類

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中文字幕在线观看视频www | 中日韩乱码一二新区 | 色播久久| 一道本不卡一区 | 激情毛片 | 久久久久久久一区二区 | 亚洲精久 | 欧美日韩一区,二区,三区,久久精品 | 国产精品久久久久永久免费 | 色中色激情影院 | 日韩欧美中文字幕视频 | 国产成人综合在线观看 | japanese xxxxhd| 538任你躁在线精品视频网站 | 欧美成在线视频 | 国产成人免费精品 | 国产资源视频在线观看 | 91不雅视频 | 九九视屏 | 欧美三级短视频 | 黄色毛片一级 | 中文字幕在线日韩 | 日本成人高清视频 | 13一14毛片免费看 | 亚洲午夜天堂吃瓜在线 | 欧美成人综合视频 | 久久99国产伦子精品免费 | 国产精品午夜未成人免费观看 | 久综合色| 全黄性性激高免费视频 | 国产亚洲综合一区二区 | 91精品国产91 | av电影院在线观看 | 日韩av官网 | 亚州精品天堂中文字幕 | 日本精品久久久久久草草 | 一本一本久久a久久精品综合小说 | 成人午夜在线免费视频 | 国产又白又嫩又紧又爽18p | 性看小视频 | 毛片免费视频在线观看 |