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

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

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

2. InetAddress使用代码示例:

 1 package com.himi.InetAddressDemo;
 2 
 3 import java.net.InetAddress;
 4 import java.net.UnknownHostException;
 5 
 6 public class InetAddressDemo {
 7 
 8     public static void main(String[] args) throws UnknownHostException {
 9         //创建IP地址对象
10         //InetAddress address = InetAddress.getByName("GDIZOK2X2LA0SQG");(本机)
11         //InetAddress address = InetAddress.getByName("49.123.72.145"");(本机)
12         InetAddress address = InetAddress.getByName("49.123.72.140");//同一个网络别的主机
13 
14         //获取主机名 和 IP地址
15         String host = address.getHostName();
16         String IP = address.getHostAddress();
17         System.out.println("主机名为:"+host+"======="+"IP地址为"+IP);
18     }
19 
20 }

运行效果,如下:

本机:

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

原文地址:https://www.cnblogs.com/hebao0514/p/4858762.html