Java网络编程底子(一) InetAddress类的操纵[Java编程]
本文“Java网络编程底子(一) InetAddress类的操纵[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
InetAddress类在网络API套接字编程中扮演了一个重要角色.
参数传送给流套接字类和自寻址套接字类构造器或非构造器办法.InetAddress描写了32位或64位IP地址,要完成这个功效,InetAddress类主要依靠两个支持类Inet4Address 和 Inet6Address,这三个类是担当关系,InetAddrress是父类,Inet4Address 和 Inet6Address是子类.
由于InetAddress类只有一个构造函数,并且不能传送参数,所以不能直接成立InetAddress对象,比方下面的做法就是错误的:
InetAddress ia = new InetAddress ();
但我们可以通过下面的5个工厂办法成立来成立一个InetAddress对象或InetAddress数组:
. getAllByName(String host)办法返回一个InetAddress对象的引用,每个对象包含一个表示呼应主机名的单独的IP地址,这个IP地址是通过host参数传送的,关于指定的主机假如没有IP地址存在那么这个办法将抛出一个UnknownHostException 非常对象.
. getByAddress(byte [] addr)办法返回一个InetAddress对象的引用,这个对象包含了一个Ipv4地址或Ipv6地址,Ipv4地址是一个4字节数组,Ipv6地址是一个16字节地址数组,假如返回的数组既不是4字节的也不是16字节的,那么办法将会抛出一个UnknownHostException非常对象.
. getByAddress(String host, byte [] addr)办法返回一个InetAddress对象的引用,这个InetAddress对象包含了一个由host和4字节的addr数组指定的IP地址,大概是host和16字节的addr数组指定的IP地址,假如这个数组既不是4字节的也不是16位字节的,那么该办法将抛出一个UnknownHostException非常对象.
. getByName(String host)办法返回一个InetAddress对象,该对象包含了一个与host参数指定的主机相对应的IP地址,关于指定的主机假如没有IP地址存在,那么办法将抛出一个UnknownHostException非常对象.
. getLocalHost()办法返回一个InetAddress对象,这个对象包含了本地机的IP地址,考虑到本地主机既是客户程序主机又是服务器程序主机,为避免混乱,我们将客户程序主机称为客户主机,将服务器程序主机称为服务器主机.
上面讲到的办法均提到返回一个或多个InetAddress对象的引用,实际上每一个办法都要返回一个或多个Inet4Address/Inet6Address对象的引用,调用者不需求知道引用的子范例,相反调用者可以利用返回的引用调用InetAddress对象的非静态办法,包含子范例的多态以确保重载办法被调用.
InetAddress和它的子范例对象处理主机名到主机IPv4或IPv6地址的转换,要完成这个转换需求利用域名系统,下面的代码示范了若何通过调用getByName(String host)办法得到InetAddress子类对象的办法,这个对象包含了与host参数相对应的IP地址:
InetAddress ia = InetAddress.getByName ("www.javajeff.com"));
一但得到了InetAddress子类对象的引用便可以调用InetAddress的各种办法来得到InetAddress子类对象中的IP地址信息,比方,可以通过调用getCanonicalHostName()从域名服务中得到尺度的主机名;getHostAddress()得到IP地址,getHostName()得到主机名,isLoopbackAddress()判断IP地址能否是一个loopback地址.
List1 是一段示范代码:
// InetAddressDemo.java
import java.net.*;
class InetAddressDemo
{
public static void main (String [] args) throws UnknownHostException
{
String host = "localhost";
if (args.length == 1)
host = args [0];
InetAddress ia = InetAddress.getByName (host);
System.out.println ("Canonical Host Name = " +
ia.getCanonicalHostName ());
System.out.println ("Host Address = " +
ia.getHostAddress ());
System.out.println ("Host Name = " +
ia.getHostName ());
System.out.println ("Is Loopback Address = " +
ia.isLoopbackAddress ());
}
}
当无号令行参数时,代码输出近似下面的后果:
Canonical Host Name = localhost
Host Address = 127.0.0.1
Host Name = localhost
Is Loopback Address = true
InetAddressDemo给了你一个指定主机名作为号令行参数的挑选,假如没有主机名被指定,那么将利用localhost(客户机的),InetAddressDemo通过调用getByName(String host)办法得到一个InetAddress子类对象的引用,通过这个引用得到了尺度主机名,主机地址,主机名以及IP地址能否是loopback地址的输出.
以上是“Java网络编程底子(一) InetAddress类的操纵[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |