java获取本机ip的方法

news2025/1/22 15:49:41

 

Java中有一个类叫 Application,可以用来获取本机 ip,也可以用来获取网络连接的信息,例如网络上有什么主机、需要访问本机的主机名等。但是这个类只能在本机上使用,如果要访问外部的主机,还需要使用其它的方法。 首先在主程序中写一个 java. util. Application ()方法,然后在子类中定义一个 Application类,如图1所示。 通过这个类可以获取到本机 ip地址。当然,这个类不是只能在本机上使用,其他地方也可以使用。 2.在子类中定义一个 Application方法(方法名根据需要自己取)。 4.用上述方法获得本机 ip地址(方法名和子类都是自定义的)。 5.调用 application方法来获取本机 ip地址。 6.如果在 Java程序中使用了 Debug模式,那么在这一步可以用 Debug模式来获取本机 ip地址。但是如果采用的是动态 IP,那么就要用动态 IP协议来获取本机 ip地址。

  • 一、获取动态 IP

    动态 IP是指路由器根据一定的规则,动态分配 IP地址,当主机从一个路由器转发数据时,路由器将这个 IP地址保存在自己的内存中,并在下一个周期根据该 IP地址计算出下一个周期的 IP地址。在动态 IP中,主机的 ip地址不固定。也就是说,在一次连接成功后,这个 ip地址是不会改变的。需要获取的是主机当前的动态 IP地址,即“本地动态 IP地址”。 Java中采用的动态 IP协议是 TCP/IP协议中的IPv4协议。IPv4协议与 Internet没有直接关系,其主要目标是在因特网上提供虚拟专用网服务。而 TCP/IP协议则是用于因特网上通信的三大基本协议之一。TCP/IP是建立在 TCP/IP之上的一整套规范,它规定了在因特网上进行通信时应遵循的一些规则(包括数据报格式、网络层传输格式、报头结构等)和接口规范。

  • 二、网络协议

    IP地址是一组数字,表示网络上的主机所处的位置。为了能让网络上所有的主机都能使用 IP地址,就需要一个协议。这个协议叫 IP协议,也叫网络协议。 在 TCP/IP协议中有三种不同的方式来表示网络中的主机地址。 第一种方式是用网络号来表示,第二种方式是用 IP地址来表示,第三种方式是用端口号来表示。因此,在 TCP/IP协议中,也是使用 IP地址和端口号来表示的。这里使用的是第三种方式。 要了解 IP地址和端口号之间的关系,可以看一下下面这个图: 根据图3所示,可以看到两个端口之间的连接情况。如果两个端口之间只有一条数据线,那么就是1;如果有两条数据线,那么就是2;如果有三条数据线,那么就是3。 对于三个端口之间的连接情况,我们可以用下面这个图来表示: 如图4所示,可以看出三个端口之间都有一条数据线。而这条数据线对应着相应的网络协议。

  • 三、基本配置

    1.首先打开 cmd命令窗口,在命令窗口中输入 cmd,回车。 2.在命令窗口中输入 ipconfig,回车。

  • 四、本地配置

    1.在 Java程序中用 Application方法获取本机 ip地址时,并不是直接调用本机的 application方法,而是使用一个 java. util. Application ()方法。如果有多个本地连接,那么可以使用多个 application方法。 2.在本地配置中,使用本机的 ip地址、端口、网段等信息。例如,在本机上的 ip地址为192.168.1.0,端口为80,那么需要将地址和端口分别设置为192.168.1.1和80。 3.使用 Debug模式来获取本机 ip地址时,只要设置了上述信息就可以了。 4.如果要获取的是动态 IP地址,那么需要将以上所有步骤都设置成自动。

  • 五、安全配置

    1.首先需要在 Java中对上述类库进行安全配置。方法是在类的 static成员方法中添加一个名为 test的安全参数,如图2所示。如果将 Test类加入到类库中,那么在程序运行时就会自动检测 test类是否为静态类。如果是静态类,就不能在程序运行时检测 test类,也就不能获取本机的 ip地址。 2.然后将 Test类添加到类库中,如图3所示。 4.将获取到的本机 ip地址和 test类绑定,如果需要访问外部的主机,那么需要使用动态 IP协议来访问,如果采用静态 IP协议,就可以获取到外部主机的 IP地址。 5.将获取到的本机 ip地址和 test类绑定,这样就可以使用 test类来访问外部主机了。

  • 六、网络配置

    1.进入网络配置界面,在“本地连接”窗口中,输入“连接到 Internet”并按回车键,即可启动 Internet。 2.进入 Internet,在“常规”选项卡中,选择“属性”。 3.点击“网络”,如图3所示,在弹出的对话框中输入“IP地址”并按回车键,然后再点击“属性”。如图5所示。 5.此时进入网络设置界面,在 IP地址前面添加子网掩码和网关即可完成网络配置。 6.到此完成了对本机 ip地址的获取。

  • 七、运行环境

    4.在上述配置环境变量的基础上,如果使用了网络适配器(Network Adapter),那么还需要配置网络适配器的相关变量。

以下是几种获取本机IP地址的Java代码:

1. 使用InetAddress类
```java
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetLocalIP {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("本机IP地址:" + localHost.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
```
2. 使用NetworkInterface类
```java
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class GetLocalIP {
public static void main(String[] args) {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
if (!inetAddress.isLinkLocalAddress() && !inetAddress.isLoopbackAddress() && inetAddress.isSiteLocalAddress()) {
System.out.println("本机IP地址:" + inetAddress.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
```
3. 使用System类
```java
public class GetLocalIP {
public static void main(String[] args) {
String localIP = null;
try {
localIP = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
System.out.println("本机IP地址:" + localIP);
}
}
```

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

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

相关文章

教育大数据总体解决方案(5)

&#xff08;4&#xff09;错题整理 将学生的本次考试错题进行集中整理&#xff0c;提炼出所有题目的题干和正确的答案。 &#xff08;5&#xff09;提高方案 分析学生对知识点掌握情况&#xff0c;推算出学生的进步空间以及下次考试的预测拔高分数。根据学生本次考试错误知识点…

你的APP内存还在暴增吗?试着用Bitmap管理下内存~

作者&#xff1a;layz4android 相信伙伴们在日常的开发中&#xff0c;一定对图片加载有所涉猎&#xff0c;而且对于图片加载现有的第三方库也很多&#xff0c;例如Glide、coil等&#xff0c;使用这些三方库我们好像就没有啥担忧的&#xff0c;他们内部的内存管理和缓存策略做的…

Java垃圾回收机制GC完全指南,让你彻底理解JVM运行原理

1、GC过程 1&#xff09;先判断对象是否存活(是否是垃圾) 可以通过引用计数算法和可达性分析算法来判断&#xff0c;由于引用计数算法无法解决循环引用的问题&#xff0c;所以目前使用的都是可达性分析算法 2&#xff09;再遍历并回收对象(回收垃圾) 可以通过垃圾收集器&…

使用Schrödinger Python API系列教程 -- 介绍 (一)

使用Schrdinger Python API系列教程 – 介绍 (一) 本文档可从Schrdinger网站www.schrodinger.com/pythonapi访问。 从Python文档字符串生成的完整API文档可以在这里访问 介绍 在最高级别上&#xff0c;Schrdinger Python API提供了一个基本的分子结构类&#xff0c;并允许与…

redis总结之-jedis

redis总结之-jedis4. Jedis4.1 Jedis简介4.1.1 编程语言与redis4.1.2 准备工作4.1.3 代码实现4.2 Jedis简易工具类开发4.2.1 基于连接池获取连接4.2.2 封装连接参数4.2.3 加载配置信息4.2.4 获取连接4.3 可视化客户端总结计划 1. Redis 入 门&#xff08;了解&#xff09;&…

LNMP网站框架搭建(编译安装的方式)

1. Nginx的工作原理 php-fpm.conf 是控制php-fpm守护进程的 php.ini是php解析器 工作进程&#xff1a; 1.客户端通过域名进行请求访问时&#xff0c;会找Nginx对应的虚拟主机 2. Nginx对该请求进行判断&#xff0c;如果是静态请求,Nginx会自行处理&#xff0c;并将处理结果…

因果推断14--DRNet论文和代码学习

目录 论文介绍 代码实现 DRNet ReadMe 因果森林 论文介绍 因果推断3--DRNet&#xff08;个人笔记&#xff09;_万三豹的博客-CSDN博客 摘要&#xff1a;估计个体在不同程度的治疗暴露下的潜在反应&#xff0c;对于医疗保健、经济学和公共政策等几个重要领域具有很高的实…

ERP系统有什么用?主要是这三方面

ERP 是Enterprise Resource Planning 的缩写&#xff0c;即企业资源计划系统,是建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。它实现了企业内部资源和企业相关的外部资源的整合。通过软件把企业的人、财、物、产、供、销及相应的物…

socket 到底是个啥

哈喽大家好&#xff0c;我是咸鱼 我相信大家在面试过程中或多或少都会被问到这样一个问题&#xff1a;你能解释一下什么是 socket 吗 我记得我当初的回答很是浅显&#xff1a;socket 也叫套接字&#xff0c;用来负责不同主机程序之间的网络通信连接&#xff0c;socket 的表现…

整柜海运到美国的规格和收费标准是什么

整柜海运是指将所有货物安装在一个整箱内&#xff0c;由发货人和收货人共同操作&#xff0c;而目的港的收货人一般只有一个&#xff0c;方便操作。整柜海运到美国的主要流程有以下几个步骤&#xff1a;订舱、装柜、报关、海运、清关、提柜和送货。实际上&#xff0c;国际物流出…

IDEA 2023.1 最新变化

IntelliJ IDEA 2023.1 最新变化 在 IntelliJ IDEA 2023.1 中&#xff0c;我们根据用户的宝贵反馈对新 UI 做出了大量改进。 我们还实现了性能增强&#xff0c;从而更快导入 Maven&#xff0c;以及在打开项目时更早提供 IDE 功能。 新版本通过后台提交检查提供了简化的提交流程…

写博客8年与人生第一个502万

题记&#xff1a;我们并非生来强大&#xff0c;但依然可以不负青春。 原本想好好写一下如何制定一个目标并通过一点一滴的努力去实现&#xff0c;这三年反思发现其实写自己的经历并不重要。 很多人都听过一句话&#xff1a;榜样的力量是无穷的。 更现实和实际的情况是&#x…

【LeetCode】每日一题:移除元素

目录 题目&#xff1a; 思想1&#xff1a;暴力解法 思想2&#xff1a;创建一个temp数组 思想3&#xff1a;双指针 &#x1f47b;内容专栏&#xff1a;《LeetCode刷题专栏》 &#x1f428;本文概括&#xff1a;27.移除元素 &#x1f43c;本文作者&#xff1a;花 碟 &#x1…

电商评论数据爬取--R语言

1.网络爬虫 1.1 什么是网络爬虫 网络爬虫&#xff08;web crawler&#xff09;&#xff0c;也被称为网络蜘蛛&#xff08;web spider&#xff09;&#xff0c;是在万维网浏览网页并按照一定规则提取信息的脚本或者程序。 浏览网页时&#xff0c;一般流程如下&#xff1a; 利…

C++语法(17)---- 二叉搜索树

1.概念 1.父节点的左子树全小于本身 2.父节点的右子树全大于本身 3.左右子树也是二叉搜索树 时间复杂度&#xff1a;O(N)&#xff0c;有可能只有左数&#xff0c;这样就遍历了所有&#xff0c;所有复杂度为N 平衡二叉树的时间复杂度才是&#xff1a;O(logN) 2.模拟 1.数据元素…

Postman抓包教程

目录 什么是抓包&#xff1f; 如何使用 Postman 进行抓包 查看历史抓包数据 使用抓包数据进行接口测试和开发 抓包技巧和注意事项 什么是抓包&#xff1f; 在计算机网络中&#xff0c;抓包是指捕获网络流量的过程。抓包工具可以截获进出计算机网络的数据流&#xff0c;并将…

反向传播推导+numpy实现

很久没有看深度学习了&#xff0c;忘了好多东西。本来想着推导一下&#xff0c;后来发现自己不会了。 再看看以前写的代码&#xff0c;又避开了最终的东西&#xff0c;于是决定重新推导一下。 数据的说明 首先&#xff0c;我们要做一个回归的任务&#xff0c;我们使用numpy随…

5.Java循环控制语句

Java循环控制语句 循环是Java中应用最为广泛的一个知识点&#xff0c;所以也是很需要掌握的。所谓循环&#xff0c;即通过判断条件&#xff0c;重复执行一段代码&#xff0c;根据条件的变化&#xff0c;来确定代码是否执行&#xff0c;执行次数。 一、循环结构 1、while循环…

Java IO常用操作详解(代码示例)

概览 Java I/O操作指的是数据的输入/输出操作。 Java的I/O操作类在java.io包中&#xff0c;主要分以下几种&#xff1a; 基于字节操作的I/O接口&#xff1a; InputStream和OutputStream基于字符操作的I/O接口&#xff1a; Writer和Reader基于磁盘操作的I/O接口&#xff1a; …

5个令人惊艳的AI项目,开源了。。

大家好&#xff0c;我是 Jack。 今天清明&#xff0c;小伙伴们都去哪里玩了&#xff1f; 上个月我已经出去浪过了&#xff0c;清明就老实在家歇着了。 翻看了一些最近热点的开源项目&#xff0c;发现还是 AIGC 的天下。 今天&#xff0c;我将继续着重挑选几个近期的优质开源…