快速业务通道

Merlin的魔力: 使用断言 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
+ 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的魔力: Java联网增强技术(2)

时间:2011-02-02 John Zukowski

对未连接套接字和非绑定套接字的支持

通常,象在套接字之间进行读写之类的操作都是阻塞操作。在操作完成之前,调用线程都不能继续运行。在 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,并获取该站点的入口页面。可以随意将输出保存到文件中,以便查看。

清单 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) {     Syste

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号