<b>Merlin的魔力: Java联网加强技术</b>[Java编程]
本文“<b>Merlin的魔力: Java联网加强技术</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
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
以上是“<b>Merlin的魔力: Java联网加强技术</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |