Java-API简析_java.net.InetAddress类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/131590559
出自【进步*于辰的博客】

因为我发现目前,我对Java-API的学习意识比较薄弱,需要慢慢习惯使用Java-API,乃至剖析源码来提升自己的源码阅读能力和编码素质。
大家如果需要Java-API文档,我上传了【https://download.csdn.net/download/m0_69908381/87691693】。

文章目录

  • 1、概述
  • 2、方法摘要
    • 2.1 boolean equals(Object obj)
    • 2.2 byte[] getAddress()
    • 2.3 static InetAddress[] getAllByName(String host)
    • 2.4 static InetAddress getByAddress(byte[] addr)
    • 2.5 static InetAddress getByAddress(String host, byte[] addr)
    • 2.6 static InetAddress
    • 2.7 String getCanonicalHostName()
    • 2.8 String getHostAddress()
    • 2.9 String getHostName()
    • 2.10 static InetAddress getLocalHost()
    • 2.11 int hashCode()
    • 2.12 boolean isAnyLocalAddress()
    • 2.13 boolean isLinkLocalAddress()
    • 2.14 boolean isLoopbackAddress()
    • 2.15 boolean isMCGlobal()
    • 2.16 boolean isMCLinkLocal()
    • 2.17 boolean isMCNodeLocal()
    • 2.18 boolean isMCOrgLocal()
    • 2.19 boolean isMCSiteLocal()
    • 2.20 boolean isMulticastAddress()
    • 2.21 boolean isReachable(int timeout)
    • 2.22 boolean isReachable(NetworkInterface netif, int ttl, int timeout)
    • 2.23 boolean isSiteLocalAddress()
    • 2.24 String toString()

1、概述

所有已实现的接口:
Serializable

直接已知子类:
Inet4Address、Inet6Address


public class InetAddress extends Object implements Serializable

此类表示互联网协议 (IP) 地址。

IP 地址是 IP 使用的 32 位或 128 位无符号数字,它是一种低级协议,UDP 和 TCP 协议都是在它的基础上构建的。IP 地址的体系结构是由 RFC 790:Assigned Numbers、 RFC 1918:Address Allocation for Private Internets、RFC 2365:Administratively Scoped IP Multicast 和 RFC 2373:IP Version 6 Addressing Architecture 定义。InetAddress 的实例包含 IP 地址,还可能包含相应的主机名(取决于它是否用主机名构造或者是否已执行反向主机名解析)。

地址类型
单播
单个接口的标识符。发送到单播地址的数据包被交付给由该地址标识的接口。
多播地址:也称为 anylocal 地址通配符地址一定不能将其分配给任何节点。它指示缺少地址。它的一个使用示例是可以作为绑定的目标,这允许服务器在服务器主机有多个接口的情况下接收任何接口上的客户端连接。
指定 地址一定不能用作 IP 数据包的目标地址。
回送 地址:它是分配给回送接口的地址。发送到此 IP 地址的任何内容都将返回并作为本地主机上的 IP 输入。此地址常常在测试客户机时使用。
多播
一组接口(通常属于不同的节点)的标识符。发送到多播地址的数据包被交付给由该地址标识的所有接口。

IP 地址范围

链接本地 地址设计用于在单个链接上寻址以解决诸如自动地址配置、邻居发现 (neighbor discovery) 或没有路由器时的问题。

站点本地 地址设计用于在不需要全球前缀时站点内部寻址。

全球 地址在 Internet 中是唯一的。

IP 地址的文本表示形式

IP 地址的文本表示形式是特定于地址系列的。
有关 IPv4 地址格式,请参阅 Inet4Address#format,有关 IPv6 地址格式,请参阅 Inet6Address#format。

主机名解析

主机名到 IP 地址的解析 通过使用本地机器配置信息网络命名服务(如域名系统(Domain Name System,DNS)和网络信息服务(Network Information Service,NIS))来实现。要使用的特定命名服务默认情况下是本地机器配置的那个。对于任何主机名称,都返回其相应的 IP 地址。

反向名称解析 意味着对于任何 IP 地址,都返回与 IP 地址关联的主机。

InetAddress 类提供将主机名解析为其 IP 地址(或反之)的方法。

InetAddress 缓存

InetAddress 类具有一个存储成功及不成功主机名解析的缓存。正缓存用于防止 DNS 哄骗攻击;而负缓存用于提高性能
默认情况下,正主机名解析的结果会永远缓存,因为不存在何时可以安全移除缓存条目的一般规则。不成功主机名解析的结果缓存非常短的时间(10 秒)以提高性能。

在某些特定情形下,即可以确定不可能发生 DNS 哄骗攻击时,可以将 Java 安全属性设置为另外的 Time-to-live (TTL) 值来进行正缓存。类似地,系统管理员在需要时可以配置另外的负缓存 TTL 值。

两个 Java 安全属性控制着用于正负主机名解析缓存的 TTL 值:

networkaddress.cache.ttl(默认值:-1)
指示从名称服务进行成功名称查找的缓存策略。该值被指定为整数,指示缓存成功查找的秒数。
值 -1 指示“永远缓存”。
networkaddress.cache.negative.ttl(默认值:10)
指示从名称服务进行不成功名称查找的缓存策略。该值被指定为整数,指示缓存不成功查找故障的秒数。
值 0 指示“永远不缓存”。值 -1 指示“永远缓存”。

从以下版本开始:
JDK1.0
另请参见:
getByAddress(byte[])getByAddress(java.lang.String, byte[])getAllByName(java.lang.String)getByName(java.lang.String)getLocalHost()、序列化表格

2、方法摘要

2.1 boolean equals(Object obj)

将此对象与指定对象比较。
说明:
先看源码。
在这里插入图片描述
注译:

  1. obj与当前实例进行比较,当且仅当obj != null,且两者所代表的ip地址相同时,返回 true;
  2. ip地址相同条件:2个实例通过调用getAddress()(见下1项)获取的byte[]长度成分(内容)相同。

为何源码无任何业务,直接返回 false,暂未可知。

2.2 byte[] getAddress()

返回此 InetAddress 对象的原始 IP 地址。
说明:
先看源码。
在这里插入图片描述
注译:返回实例所代表的原始 ip 地址

为何源码无任何业务,直接返回 null,暂未可知。

2.3 static InetAddress[] getAllByName(String host)

在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。

2.4 static InetAddress getByAddress(byte[] addr)

在给定原始 IP 地址的情况下,返回 InetAddress 对象。

2.5 static InetAddress getByAddress(String host, byte[] addr)

根据提供的主机名和 IP 地址创建 InetAddress。

2.6 static InetAddress

在给定主机名的情况下确定主机的 IP 地址。

2.7 String getCanonicalHostName()

获取此 IP 地址的完全限定域名。

2.8 String getHostAddress()

返回 IP 地址字符串(以文本表现形式)。

2.9 String getHostName()

获取此 IP 地址的主机名。

2.10 static InetAddress getLocalHost()

返回本地主机。

2.11 int hashCode()

返回此 IP 地址的哈希码。

2.12 boolean isAnyLocalAddress()

检查 InetAddress 是否是通配符地址的实用例行程序。

2.13 boolean isLinkLocalAddress()

检查 InetAddress 是否是链接本地地址的实用例行程序。

2.14 boolean isLoopbackAddress()

检查 InetAddress 是否是回送地址的实用例行程序。

2.15 boolean isMCGlobal()

检查多播地址是否具有全球范围的实用例行程序。

2.16 boolean isMCLinkLocal()

检查多播地址是否具有链接范围的实用例行程序。

2.17 boolean isMCNodeLocal()

检查多播地址是否具有节点范围的实用例行程序。

2.18 boolean isMCOrgLocal()

检查多播地址是否具有组织范围的实用例行程序。

2.19 boolean isMCSiteLocal()

检查多播地址是否具有站点范围的实用例行程序。

2.20 boolean isMulticastAddress()

检查 InetAddress 是否是 IP 多播地址的实用例行程序。

2.21 boolean isReachable(int timeout)

测试是否可以达到该地址。

2.22 boolean isReachable(NetworkInterface netif, int ttl, int timeout)

测试是否可以达到该地址。

2.23 boolean isSiteLocalAddress()

检查 InetAddress 是否是站点本地地址的实用例行程序。

2.24 String toString()

将此 IP 地址转换为 String。


本文持续更新中。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/14004.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pandas+Pyecharts | 双十一美妆销售数据分析可视化

文章目录 🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 数据信息2.3 筛选有销量的数据 🏳️‍🌈 3. Pyecharts数据可视化3.1 双十一前后几天美妆订单数量3.2 双十一前后几天美妆销量3.3…

go数据结构之slice与map

1. 切片 1. 切片结构定义 type slice struct {array unsafe.Pointerlen intcap int }array:引用的底层数组,动态数组,可以修改 如果多个切片的array指针指向同一个动态数组,则它们都可以对底层这个动态数组元素进行修改。 len:&#xf…

简要介绍 | 两阶段点云目标检测:理论与实践

注1:本文系“简要介绍”系列之一,仅从概念上对两阶段点云目标检测进行非常简要的介绍,不适合用于深入和详细的了解。 两阶段点云目标检测:理论与实践 在这篇博客中,我们将探索两阶段点云目标检测的理论基础和实际应用…

mac与pd虚拟机之间不能粘贴文字或粘贴文件

首先确保共享打开: 然后检查虚拟机的Parallels Tools是否正常 一个简单的判断方式就是,退出虚拟机全屏之后,如果能够正常进入融合模式,那么Parallels Tools可用,否则就要排查问题 检查Parallels Tools是否随系统正常启…

基于微信小程序学校部门年终绩效考核自动评分系统(源码+文档+数据库+PPT)

基于微信小程序的部门年终绩效考核系统,为加强学校运营队伍建设提高学校管理力,合理评价教师及部门年度工作计划完成情况,促进整体绩效改进,鼓励管理团队注重对下属进行帮助、提升,促进团队扩张和发展,特制…

MFC学习日记(二)——VS2012应用程序工程中文件的组成结构

上一篇我们用应用程序向导生成框架程序后,我们可以打开工程所在的文件夹看到以下以解决方案命名的文件夹,此文件夹中包含了几个文件和一个以工程名命名的子文件夹,这个子文件夹中又包含了若干个文件和一个res文件夹,创建工程时的选…

Linux性能优化实践——平均负载

平均负载(Load Average) 当我们输入uptime命令时, 这里有几个参数,解释如下 0:54 :当前时间;up 50 mins:系统运行时间;2 users:正在登录用户数;load avera…

UDP客户端和服务器

UDP客户端,也就是首先主动发送数据的一方,也就是发起服务请求的一方。 UDP服务器,也就是首先等待接收数据,并对接收的数据进行处理,返回计算结果的一方,也就是提供服务的一方。 在下面实验中使用到的函数 …

mysql单表查询,排序,分组查询,运算符

CREATE TABLE emp (empno int(4) NOT NULL, --员工编号ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,--员工名字job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,--员工工作mgr int(4) NULL DEFAULT NU…

【CSS】悬浮动画

文章目录 效果展示代码实现 效果展示 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>一颗不甘坠落的流星</title></head><style type"text/css">.bth {/* 添加背景颜色 */backgr…

【周末闲谈】关于计算机的二三事

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 文章目录 前言一、第一台计算机的诞生&#x1f4bb;二、计算机发展历史&#x1f4da;第一代计算机&#x1f4bb;第二代计算机&#x1f4bb;第三代计算机&#x1f4bb;第四代计算机&#x…

chatgpt 与传统3D建模对比分析

推荐&#xff1a;将NSDT场景编辑器加入你的3D工具链 随着人工智能技术的发展&#xff0c;越来越多的领域正逐渐被AI模型所取代。ChatGPT作为一种自然语言处理技术&#xff0c;越来越为人们所熟悉。最近&#xff0c;一些3D建模领域的专家想知道ChatGPT是否可以取代传统的手动3D建…