IP地址封装类(InetAddress类)

news2024/9/22 3:57:30

文章目录

  • 前言
  • 一、IP地址是什么?
  • 二、IP地址封装类
    • 1.常用方法
    • 2.实操展示
  • 总结

前言

        当我们想要获取到通信对方的IP地址、主机地址等信息时,我们可以使用InetAddress类。InetAddress类在java的net包中。


一、IP地址是什么?

        IP地址 (Internet Protocol address) 是一组用于标识和定位计算机网络中设备的数字。

        IP地址的作用类似于门牌号,用于识别网络中的设备。它由32位或128位的数字组成,以点分四组或冒号分八组进行表示。在IPv4中,通常以 xxx.xxx.xxx.xxx 的形式表示,其中每个xxx可以是0-255之间的数字。在IPv6中,以 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx 的形式表示。

        IP地址的主要用途是在互联网上进行网络通信和数据传输。每个设备在网络中都有一个唯一的IP地址,以便可以准确地发送和接收数据。

        (1)特殊的IP地址:本地回送地址

        本地回送地址(Loopback Address)是一个被保留的IP地址,用于在本地主机上进行网络通信测试和故障排除。

        在IPv4中,本地回送地址是127.0.0.1,而在IPv6中,本地回送地址是::1。

        当计算机向本地回送地址发送数据时,操作系统会将数据立即返回给发送者,而不进行网络传输。这使得应用程序可以自己与自己进行通信,以验证网络功能是否正常。本地回送地址在开发和测试网络应用程序时非常有用。

        (2)IP地址与网址的关系:

        IP地址和网址之间存在一种映射关系。当我们在浏览器中输入一个网址,例如www.baidu.com,实际上浏览器会通过域名系统(DNS)将网址转换为相应的IP地址,然后再通过该IP地址找到对应的服务器,最终访问所需的网页内容。

        因此,IP地址是一个唯一标识网络设备的数字地址,而网址是一个便于人们记忆和使用的域名,通过域名系统将网址转换为IP地址,实现对服务器的访问。

        简而言之,IP地址是服务器的具体地址,而网址是IP地址的别名。

        (3)关于IP地址泄露的危害:

        追踪和定位:通过IP地址,攻击者可能能够追踪和定位您的物理位置。这可能会导致入侵者直接攻击您的电脑或实施其他恶意行为。

        网络攻击:攻击者可以使用您的IP地址来进行网络攻击,如端口扫描、DDoS攻击等,以尝试入侵您的网络或服务。

        个人信息暴露:有时候,IP地址可能与其他个人信息相关联,如您的姓名、地址等。通过IP地址的泄露,攻击者可能得到更多的个人信息,从而进行身份盗窃或进行其他恶意行动。

        骚扰和欺诈:通过获取您的IP地址,攻击者可能发送垃圾邮件、进行电话骚扰或进行其他形式的欺诈活动。

        入侵网络设备:通过获取您的IP地址,攻击者可能试图入侵您的路由器或其他网络设备,从而获得对整个网络的控制权。

二、IP地址封装类

       InetAddress类是一个用于表示IP地址的类,InetAddress对象可以视为IP地址。InetAddress类表示互联网协议(IP)地址,可以用于表示IP地址或主机名。开发者可以使用InetAddress类的方法获取IP地址的字符串表示形式、域名、主机名等信息。

        并且InetAddress类的构造方法是私有的,因此我们不能直接使用构造方法创建InetAddress对象。但是,我们可以使用静态方法来获取InetAddress对象。下面来介绍使用InetAddress类的常用方法。

1.常用方法

InetAddress类的常用方法
方法功能描述返回类型
getByName(String host)获取与host相对应的InetAddress对象InetAddress
getHostAddress()获取InetAddress对象所包含的IP地址String
getHostName()获取此IP地址的主机名String
getLocalHost()返回本地主机的InetAddress对象InetAddress
isReachable(int timeout):判断主机是否可达(超时),参数timeout表示超时时间boolean
equals(Object obj)判断两个InetAddress对象是否相等boolean
hashCode()返回对象的哈希码int
toString()返回InetAddress对象的字符串表示string

        InetAddress类的方法会抛出UnknownHostException异常,所以要使用try-catch语句进行异常处理。这个异常在主机不存在或者网络连接错误时发生。

2.实操展示

        (1)获取本地主机和IP地址:

import java.net.*;
public class Luo{ 
    public static void main(String[] args) {
        try {
            InetAddress address = InetAddress.getLocalHost();
            System.out.println("本地主机的名称为:"+address.getHostName());
            System.out.println("本地主机的IP地址为:"+address.getHostAddress());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

        导入java.net包。使用getLocalHost()方法,将本地主机的主机名和IP地址都赋值给InetAddress对象(address)。再分别使用getHostName()和getHostAddress()方法,在终端中输出本地主机的主机名和IP地址。

        运行结果:

        由上图所示,显示出了我笔记本的主机名称和IP地址。 

        (2)获取指定网址的计算机名和IP地址:

import java.net.*;
public class Luo{ 
    public static void main(String[] args) {
        try {
            InetAddress address[] = InetAddress.getAllByName("www.baidu.com");
            for(InetAddress in:address){
                System.out.println("目标网址的主机名称为:"+in.getHostName());
                System.out.println("目标网址的主机IP地址为:"+in.getHostAddress());
                System.out.println("--------------------------------------");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

        导入java.net包。使用getAllByName()方法获取百度网址的所有主机名和公共IP地址。再通过for循环变量这个InetAddress数组,在终端输出所有查询到的结果。

        运行结果:

        如上图所示,我们获取到了百度网址的两个公共IP地址。

        值得注意的是,无论网址,还是主机IP地址,只要输入到浏览器中,皆可打开对应的网站。

         

 

         这恰恰反证了,网址就是公共IP地址的别名。网址是为了让人读懂,公共IP地址是为了让电脑看懂。


总结

        以上就是IP地址和InetAddress类的简单介绍.关于开发网络程序,IP地址,以及IP地址封装类都是不可避免的话题。如果该文中有错误的地方,或者有读者想要补充的内容,欢迎在评论区中积极留言。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能算法岗找实习经验(一)简历撰写

首先分享简历撰写,下面简历仅供参考。 分为教育经历、个人能力、项目经历和竞赛经历4个部分。因为找的是算法岗,所以没有涉及太多技术和项目之外的东西。 教育经历 教育经历就是简单介绍下大学、专业、GPA还有就是和人工智能算法岗相关的专业课。 个…

【Python-实操】LabelMe to YOLOv8 Converter

LabelMe to YOLOv8 Converter 这是一个 Python 脚本,用于将 LabelMe 标注工具导出的 JSON 文件转换为 YOLOv8 格式的标注文件,并同时在图像上绘制标注的多边形。 功能 读取 LabelMe JSON 文件。解码并显示图像。从 classes.txt 文件加载类别标签。将多…

超有效!这样选的宠物空气净化器真能去浮毛?一款家电助力呼吸道

我那哥们儿,最近家里多了个毛茸茸的小成员——一只小猫。他对这猫好得不得了,俩人几乎是形影不离。可问题来了,小猫一长大,那毛啊,掉得满屋子都是。哥们儿最近就老抱怨,说晚上睡觉喉咙不舒服,问…

LVS是什么?以及LVS-NAT以及DR模式实验

目录 NAT LVS LVS集群的类型: LVS-NAT模式实验 环境准备: 实验步骤: LVS-DR模式实验 题目: 环境准备: 实验步骤: LVS-防火墙标签解决轮询调度问题 环境准备: 实验步骤&#xff1…

springboot疫情隔离酒店管理系统的开发--论文源码调试讲解

1系统成功运行案例 2 相关技术介绍 2.1 B/S模式 B/S模式是一种比较常用的网络结构模式[7]。B/S模式是由MVC结构组成,即模型、视图、控制器是构成该模式的主要结构[8]。模型主要是指业务模型,视图是面向用户而显示的相关界面,控制器主要是控制…

使用 defineNuxtComponent`定义 Vue 组件

title: 使用 defineNuxtComponent定义 Vue 组件 date: 2024/8/9 updated: 2024/8/9 author: cmdragon excerpt: 摘要:本文介绍了在Nuxt 3中使用defineNuxtComponent辅助函数定义类型安全的Vue组件的方法,适用于习惯Options API的开发者。defineNuxtCo…

【Deep-ML系列】Feature Scaling Implementation(特征缩放:standardization min-max)

题目链接:Deep-ML import numpy as np def feature_scaling(data: np.ndarray) -> (np.ndarray, np.ndarray):mean np.mean(data, axis0)std np.std(data, axis0)standardized_data (data - mean) / stdmaxnum np.max(data, axis0)minnum np.min(data, axi…

嵌入式人工智能(OpenCV-基于树莓派的人脸识别与入侵检测)

1、人脸识别 人脸识别是一种技术,通过检测、跟踪和识别人脸上的关键特征,以确认人脸的身份。它通常用于安保系统、身份验证、社交媒体和人机交互等领域。 人脸识别技术的基本原理是先通过图像处理和计算机视觉算法,提取人脸的特征点和特征描…

代理模式Proxy

一、代理模式(Proxy) 1.代理模式的定义 代理模式给某一个对象提供一个代理对象,并由代理对象控制对真实对象的访问,起到对代理对象已有功能的增强 通俗的来讲代理模式就是我们生活中常见的中介。 2.作用 中介隔离作用&#x…

2024 年的 Node.js 生态系统

数据来源于 Node.js Toolbox,网站展示了 Node.js 生态系统中积极维护且流行的库。

在 Duo S 上使用 TDL SDK 高效部署人脸检测模型

TDL SDK 是一款集成算法开发包,提供了便捷的编程接口,使开发者们能够更快、高效地将各种深度学习技术应用于自己的产品和服务中。无论开发者是否是深度学习领域的专家,有了TDL SDK作为助手,都能轻松构建智能应用。 Milk-V DuoS 是…

7.4.分支限界法概率算法近似算法数据挖掘算法智能优化算法

了解,没有考过,基本上不会考 分支限界法 分支限界法:与回溯法类似,同样是在问题的解空间树上搜索问题解的一种算法,它常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。回溯…

【AI大模型】LangChain框架:示例选择器与输出解析器携手,编织NLP高效精准之网

文章目录 前言一、示例选择器1.介绍及应用2.自定义示例选择器案例:AI点评姓名 3.基于长度的示例选择器案例:对输入内容取反 4.基于最大边际相关性(MMR)的示例选择器案例:得到输入的反义词 5.基于n-gram重叠的示例选择器6.综合案例 二、输出解…

深入探索String AOP想详情

一.AOP的概述 AOP是Spring框架的第⼆⼤核⼼(第⼀⼤核⼼是IoC) Q:什么是AOP? A:Aspect Oriented Programming(⾯向切⾯编程) 什么是⾯向切⾯编程呢? 切⾯就是指某⼀类特定问题, 所以AOP也可以理解为⾯向特定⽅法编程. 什么是⾯向特…

鸿蒙HarmonyOS开发:@Observed装饰器和@ObjectLink装饰器:监听嵌套类对象属性变化

文章目录 一、装饰器二、概述三、限制条件四、装饰器说明五、Toggle组件1、子组件2、接口3、ToggleType枚举4、事件 六、示例演示1、代码2、效果 一、装饰器 State装饰器:组件内状态Prop装饰器:父子单向同步Link装饰器:父子双向同步Provide装…

Linux云计算 |【第二阶段】NETWORK-DAY1

主要内容: 计算机网络概述、网络拓扑结构、OSI参考模型、eNSP、交换机及原理 一、计算机网络概述 计算机网络是指将多台计算机或设备通过通信线路连接起来,以便它们能够相互交换信息和共享资源的系统。计算机网络的目的是实现数据通信和资源共享&#…

生成式人工智能安全评估体系构建

文章目录 前言一、人工智能安全治理的现状1.1 国际安全治理现状1.2 国内安全治理现状二、构建人工智能安全评估体系1.1 需要对生成式人工智能技术的安全性、可靠性、可控性、公平性等维度进行全面的考量。1.2 应对生成式人工智能全维度风险。1.3 在体系化应对框架中,应明确法律…

[Meachines] [Easy] Traverxec Nostromo RCE+SSH-私钥RSA解密+journalctl权限提升

信息收集 IP AddressOpening Ports10.10.10.165TCP:22,80 $ nmap -p- 10.10.10.165 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION …

nfc苹果手机怎么开启?3招就教会你

在数字化时代,nfc技术已成为智能手机的一项重要功能,它让我们的设备能够进行无线数据交换,实现便捷的移动支付、文件传输等操作。那么,nfc苹果手机怎么开启呢?如果你想要充分利用这一技术,那么本文将为你提…

git推送错误-->远程分支比本地的分支更新,无法直接推送

每次上传本地修改好的代码的时候,十次有八次都会出现这样的问题!!(暴躁!!!) 现在写个帖子记录一下,这个问题目前我还没有解决,欢迎懂的佬指点一下. 情景: 我在本地仓库做了一些代码的修改,准备上传到远程仓库上,下边是上传步骤: git add . # 将所有的修改都提交到缓冲区git …