Java教程-Java InetAddress 类

Java InetAddress 类
Java InetAddress 类表示 IP 地址。java.net.InetAddress 类提供了一些方法来获取任何主机名的 IP,例如 www.javatpoint.com、www.google.com、www.facebook.com 等。
IP 地址由 32 位或 128 位无符号数表示。InetAddress 的实例表示具有相应主机名的 IP 地址。有两种类型的地址:单播和组播。单播是单个接口的标识符,而组播是一组接口的标识符。
此外,InetAddress 具有缓存机制,用于存储成功和失败的主机名解析。
IP 地址
- IP 地址通过数值表示来帮助标识网络上的特定资源。
- 大多数网络将 IP 与 TCP(传输控制协议)结合使用。它在目标和源之间建立了一个虚拟桥梁。
IP 地址有两个版本:
IPv4
IPv4 是主要的互联网协议。它是在 1983 年在 ARAPNET 上部署的第一个 IP 版本。它是一种广泛使用的 IP 版本,用于使用寻址方案在网络上区分设备。使用 32 位寻址方案来存储 232 个地址,即超过 400 万个地址。
IPv4 的特点:
- 它是一种无连接的协议。
- 它使用较少的内存,并且可以使用基于类的寻址方案轻松记住地址。
- 它还提供视频会议和库。
IPv6
IPv6 是最新版本的互联网协议。它旨在满足更多的互联网地址需求。它提供了解决 IPv4 中存在的问题的解决方案。它提供了 128 位地址空间,可用于形成 340 个不可思议的唯一 IP 地址的网络。IPv6 也被称为 IPng(下一代互联网协议)。
IPv6 的特点:
- 它具有有状态和无状态两种配置。
- 它支持服务质量(QoS)。
- 它具有分层寻址和路由基础设施。
TCP/IP 协议
- TCP/IP 是一种通信协议模型,用于通过互联网连接设备。
- TCP/IP 协助进行寻址、传输、路由和接收互联网上的数据包。
在该通信模型中使用的两个主要协议是:
- TCP 即传输控制协议。TCP 提供了在网络上创建通信通道的方式。它还帮助发送方和接收方传输数据包。
- IP 即互联网协议。IP 为连接到互联网上的节点提供地址。它使用网关计算机检查 IP 地址是否正确,并正确转发消息。
Java InetAddress 类的方法
Method | Description |
---|---|
public static InetAddress getByName(String host) throws UnknownHostException | 它返回包含 LocalHost IP 和名称的 InetAddress 实例。 |
public static InetAddress getLocalHost() throws UnknownHostException | 它返回包含本地主机名和地址的 InetAddress 实例。 |
public String getHostName() | 它返回 IP 地址的主机名。 |
public String getHostAddress() | 它以字符串格式返回 IP 地址。 |
Java InetAddress 类示例
让我们看一个 InetAddress 类的简单示例,获取 www.javatpoint.com 网站的 IP 地址。
InetDemo.java
import java.io.*;
import java.net.*;
public class InetDemo{
public static void main(String[] args){
try{
InetAddress ip=InetAddress.getByName("www.javatpoint.com");
System.out.println("Host Name: "+ip.getHostName());
System.out.println("IP Address: "+ip.getHostAddress());
}catch(Exception e){System.out.println(e);}
}
}
输出:
Host Name: www.javatpoint.com
IP Address: 172.67.196.82
演示 InetAddress 类方法的程序
InetDemo2.java
import java.net.Inet4Address;
import java.util.Arrays;
import java.net.InetAddress;
public class InetDemo2
{
public static void main(String[] arg) throws Exception
{
InetAddress ip = Inet4Address.getByName("www.javatpoint.com");
InetAddress ip1[] = InetAddress.getAllByName("www.javatpoint.com");
byte addr[]={72, 3, 2, 12};
System.out.println("ip : "+ip);
System.out.print("\nip1 : "+ip1);
InetAddress ip2 = InetAddress.getByAddress(addr);
System.out.print("\nip2 : "+ip2);
System.out.print("\nAddress : " +Arrays.toString(ip.getAddress()));
System.out.print("\nHost Address : " +ip.getHostAddress());
System.out.print("\nisAnyLocalAddress : " +ip.isAnyLocalAddress());
System.out.print("\nisLinkLocalAddress : " +ip.isLinkLocalAddress());
System.out.print("\nisLoopbackAddress : " +ip.isLoopbackAddress());
System.out.print("\nisMCGlobal : " +ip.isMCGlobal());
System.out.print("\nisMCLinkLocal : " +ip.isMCLinkLocal());
System.out.print("\nisMCNodeLocal : " +ip.isMCNodeLocal());
System.out.print("\nisMCOrgLocal : " +ip.isMCOrgLocal());
System.out.print("\nisMCSiteLocal : " +ip.isMCSiteLocal());
System.out.print("\nisMulticastAddress : " +ip.isMulticastAddress());
System.out.print("\nisSiteLocalAddress : " +ip.isSiteLocalAddress());
System.out.print("\nhashCode : " +ip.hashCode());
System.out.print("\n Is ip1 == ip2 : " +ip.equals(ip2));
}
}
输出:
在上面的 Java 代码中,演示了 InetAdress 类的各种布尔方法。