1. InetAddress类
InetAddress是Java对IP地址的封装,在java.net中有许多类都使用到了InetAddress,包括ServerSocket,Socket,DatagramSocket等等。
InetAddress是一个不可变对象:
  •   InetAddress是一个对象,包含3个属性:主机名称、主机别名、主机ip
  •   一个ip对应唯一一个主机名,一个主机名可以对应多个ip(一台计算机上有多个网络地址),一个域名可以对应多个ip(一个web服务有多台机器做负载均衡),一个ip也可以对应多个域名(多个web服务器在同一台机器上)
  •   一般的主机别名就是:网站的域名,为了便于记忆 ,DNS通过主机别名或者主机名都能找到相应的IP
(1)
 所有已实现的接口:
Serializable
直接已知子类:
Inet4Address, Inet6Address

InetAddress这个类没有构造方法,我们回忆一下什么样的类没有构造方法,如下:

如果一个类没有构造方法:
  A:  成员全部是静态的(Math,Arrays,Collections)
  B:  单例设计模式(Runtime)
  C:  类中有静态方法返回该类的对象(InetAddress)
     class Demo {
               private Demo(){}

               public static Demo getXxx() {
                          return new Demo();
               }
    }
很明显通过API知道InetAddress是C这种情况。

 

(2)看InetAddress的成员方法:

 public static InetAddress getByName(String host):根据主机名或者IP地址的字符串表示得到IP地址对象

2. InetAddress使用代码示例:

 package com.himi.InetAddressDemo;

 import java.net.InetAddress;
import java.net.UnknownHostException; public class InetAddressDemo { public static void main(String[] args) throws UnknownHostException {
//创建IP地址对象
//InetAddress address = InetAddress.getByName("GDIZOK2X2LA0SQG");(本机)
//InetAddress address = InetAddress.getByName("49.123.72.145"");(本机)
InetAddress address = InetAddress.getByName("49.123.72.140");//同一个网络别的主机 //获取主机名 和 IP地址
String host = address.getHostName();
String IP = address.getHostAddress();
System.out.println("主机名为:"+host+"======="+"IP地址为"+IP);
} }

运行效果,如下:

本机:

Java基础知识强化之网络编程笔记01:InetAddress类的概述和使用-LMLPHP

别的主机:(同一个网段)

Java基础知识强化之网络编程笔记01:InetAddress类的概述和使用-LMLPHP

04-16 05:03