当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .