`

Java网络编程基础 InetAddress类的使用

阅读更多
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地址。

// 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类与URL类

    总的来说,Java中的InetAddress和URL类是网络编程的基础,它们提供了处理网络地址和定位网络资源的便利工具。理解并熟练运用这两个类,可以帮助开发者构建出强大的网络应用。在学习和实践中,不仅要掌握基本的API...

    JAVA网络编程

    Java网络编程基础 InetAddress类的使用.doc Java网络编程基础 ServerSocket类使用.doc 《JAVA编程规范》.doc Java基础 三步学会Java Socket编程(一) .doc Java基础 三步学会Java Socket编程(二) .doc Java基础 三步...

    Java网络编程期末考试复习题库+答案

    8. **Java网络类库**: 如InetAddress用于处理IP地址和主机名,URL类用于处理统一资源定位符,SocketAddress表示网络服务的地址。 9. **异常处理**: 在网络编程中,如IOException、SocketException等异常的处理至关...

    Java网络编程精解(孙卫琴)电子教案

    1. **Java网络编程基础** - **网络编程模型**:Java网络编程基于客户-服务器模型,客户端发起请求,服务器响应。这一模型在Java中通过Socket和ServerSocket类来实现。 - **Java I/O**:网络通信中数据的传输离不开...

    Java网络编程第三版.pdf

    1. **Java网络编程基础**:首先,书中会介绍Java中的Socket编程,包括TCP和UDP协议的基础知识,以及如何使用Java的Socket和ServerSocket类创建客户端和服务器端的连接。 2. **I/O与NIO**:Java的I/O流系统是网络...

    Java中的IP地址和InetAddress类使用详解

    在Java编程中,了解和使用IP地址以及InetAddress类是非常基础且重要的。IP地址是互联网上每台设备的唯一标识,它由32位二进制数字组成,通常以四段十进制的形式表示。在实际使用中,我们更习惯于使用域名,如...

    Java网络编程实例(随书源代码)

    - **套接字(Sockets)**:Java中的Socket类和ServerSocket类是网络通信的基础,它们分别代表客户端和服务器端的连接。 - **URL(统一资源定位符)**:用于唯一标识网络上的资源,Java提供了URL类来处理和解析URL...

    java网络编程

    Java网络编程是Java开发中的重要领域,它涵盖了网络通信的所有基本概念和技术...通过阅读《Java网络编程》第三版,开发者可以系统地学习这些知识点,并通过实例加深理解,为构建高效、安全的网络应用程序打下坚实基础。

    Java网络编程的研究.pdf

    2. Socket编程基础:介绍Socket类的基本概念,如Socket的创建、连接、关闭等。 Socket类是Java网络编程的核心,用于实现客户端和服务器端之间的网络通信。Socket类提供了多种方法,如connect、accept、send、...

    java 网络协议(一)InetAddress和Socket(含源码)

    Java网络编程是开发分布式应用程序的基础,它涉及到网络通信的各种协议,如TCP/IP、UDP等。在Java中,`InetAddress`和`Socket`是两个核心类,它们在处理网络连接和通信时起着至关重要的作用。这篇博客将深入探讨这两...

    Java网络编程.chm

    在Java中,Socket类和ServerSocket类是网络编程的核心,它们分别代表客户端和服务器端的连接端点,通过这些类可以建立TCP连接并进行双向通信。 TCP/IP协议是网络通信的基础,Java的java.net包提供了对TCP/IP协议的...

    java实验7 网络编程

    本实验主要涉及Java 网络编程的基础知识,包括使用InetAddress类获取主机的IP地址和主机名称,使用Socket和ServerSocket类实现C/S通信。 一、 InetAddress类 InetAddress类是Java中用于表示Internet协议(IP)地址...

    Java网络编程基础

    在本教程中,我们将深入探讨Java网络编程的基础知识,包括其原理、API使用以及常见应用。 首先,理解网络编程的基本概念至关重要。网络是通过互联网协议连接的计算机集合,而网络编程就是编写能够通过这些连接交换...

    Java网络编程学习资料

    本文将深入探讨标题和描述中提及的几个关键知识点:Java套接字编程、Java的网络功能与编程基础、TCP网络协议以及Java Transaction API。 首先,我们来了解**Java套接字编程**。套接字(Socket)是实现进程间通信的...

    JAVA网络编程学习资料

    Java提供了一系列的类和接口来处理网络功能,如InetAddress类用于处理IP地址,URL类用于处理统一资源定位符,HttpURLConnection类用于HTTP通信。此外,Socket和ServerSocket可以用来创建基于TCP的网络应用,而...

    Java网络编程基础.doc

    本文将深入探讨Java网络编程的基础,特别是涉及InetAddress类及其子类Inet4Address和Inet6Address。 InetAddress类在Java中扮演着核心角色,它提供了IP地址的抽象,支持IPv4和IPv6两种协议。由于InetAddress只有一...

    Java网络编程-第三版(中文版).pdf(Elliotte Rusty Harold)

    1. **Java网络编程基础**: - **套接字(Sockets)**:Java通过Socket类和ServerSocket类提供了一种标准的方式来实现客户端-服务器通信。Socket代表了网络上的两个应用程序之间的连接。 - **输入/输出流**:在网络...

    java网络编程基础入门.pdf

    Java网络编程基础是学习计算机网络的关键,它涵盖了网络互连的原理和实现方式。网络编程允许不同计算机上的程序之间进行数据交换,这是20世纪最重要的技术成就之一,如同计算机网络对于现代生活的重要性。 网络模型...

    java练习题-网络编程

    【Java网络编程基础】 在Java编程中,网络编程是一个重要的领域,主要涉及到如何通过网络连接进行数据传输。这里我们关注的是TCP Socket通信,这是一种面向连接的、可靠的、基于字节流的传输层通信协议。 1. **...

Global site tag (gtag.js) - Google Analytics