JAVA如何获取服务器ip

这篇具有很好参考价值的文章主要介绍了JAVA如何获取服务器ip。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、最简单的方法就是使用InetAddress获取本机ip

InetAddress.getLocalHost().getHostAddress();
public static void main(String[] args) {
        try {
            //用 getLocalHost() 方法创建的InetAddress的对象
            InetAddress address = InetAddress.getLocalHost();
            System.out.println(address.getHostName());//主机名
            System.out.println(address.getCanonicalHostName());//主机别名
            System.out.println(address.getHostAddress());//获取IP地址
            System.out.println("===============");
            
            //用域名创建 InetAddress对象
            InetAddress address1 = InetAddress.getByName("www.wodexiangce.cn");
            //获取的是该网站的ip地址,如果我们所有的请求都通过nginx的,所以这里获取到的其实是nginx服务器的IP地址
            System.out.println(address1.getHostName());//www.wodexiangce.cn
            System.out.println(address1.getCanonicalHostName());//124.237.121.122
            System.out.println(address1.getHostAddress());//124.237.121.122
            System.out.println("===============");
            
            //用IP地址创建InetAddress对象
            InetAddress address2 = InetAddress.getByName("220.181.111.188");
            System.out.println(address2.getHostName());//220.181.111.188
            System.out.println(address2.getCanonicalHostName());//220.181.111.188
            System.out.println(address2.getHostAddress());//220.181.111.188
            System.out.println("===============");
            
            //根据主机名返回其可能的所有InetAddress对象
            InetAddress[] addresses = InetAddress.getAllByName("www.baidu.com");
            for (InetAddress addr : addresses) {
                System.out.println(addr);
                //www.baidu.com/220.181.111.188
                //www.baidu.com/220.181.112.244
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }

二、当服务器有多个网络接口或配置了多个IP地址时

该方法返回的是默认的本地地址,可能是服务器上某个网络接口的IP地址,但不一定是我们期望获取的IP地址。

为了获取正确的IP地址,可以使用其他方法来获取服务器上所有的网络接口,并遍历每个网络接口来获取对应的IP地址。可以使用NetworkInterface类来实现此功能,如下所示:

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

public class GetServerIPAddress {
    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface networkInterface = interfaces.nextElement();
                Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
                while (addresses.hasMoreElements()) {
                    InetAddress address = addresses.nextElement();
                    if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {
                        System.out.println("服务器的IP地址是:" + address.getHostAddress());
                    }
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们使用NetworkInterface.getNetworkInterfaces()方法获取所有的网络接口,然后遍历每个网络接口,再通过getInetAddresses()方法获取每个网络接口的IP地址。在获取IP地址时,我们可以根据需求进行过滤,例如排除回环地址、链路本地地址,只选择站点本地地址等。

通过这种方式,我们可以获取到服务器上所有网络接口的IP地址,包括多个IP地址的情况。这样可以确保获取到正确的IP地址。

三、当使用代理服务器时

当使用代理服务器时,InetAddress.getLocalHost()方法返回的是本地主机(即运行该代码的主机)的IP地址,而不是代理服务器的IP地址。这是因为getLocalHost()方法返回的是当前主机的IP地址,而不是代理服务器的IP地址。

在使用代理服务器时,如果想要获取代理服务器的IP地址,可以使用其他方法来实现,例如可以发送一个HTTP请求到一个公共的IP地址查询服务,然后从返回的响应中解析出代理服务器的IP地址。

以下是一个示例代码,演示如何通过发送HTTP请求获取代理服务器的IP地址:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.URL;

public class GetProxyIPAddress {
    public static void main(String[] args) {
        try {
            URL url = new URL("http://api.ipify.org");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();

            int responseCode = connection.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String ipAddress = reader.readLine();
                System.out.println("代理服务器的IP地址是:" + ipAddress);
                reader.close();
            }
            connection.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们发送一个GET请求到http://api.ipify.org,该服务会返回我们的公共IP地址。通过解析响应,我们可以获取到代理服务器的IP地址。请注意,这种方式仅适用于能够访问公共IP地址查询服务的情况。文章来源地址https://www.toymoban.com/news/detail-723503.html

到了这里,关于JAVA如何获取服务器ip的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 获取远程ftp服务器的文件

    最近做医疗的项目,涉及远程访问医院的pacs服务器获取医疗影像数据。由于医院厂商只提供了ftp的相关信息。需要用java开发脚本来自动拉取T-1的数据。 涉及jar包 ### main函数 其中涉及的配置类 ftp client连接server端 通过上面的代码实现自动拉取ftp服务端应用目录下面的文件(也

    2024年02月11日
    浏览(54)
  • springboot项目要如何获取当前服务器的IP以及当前项目使用的端口号Port

    使用InetAddress类即可,直接看例子: 在配置文件中配置server.port的值,之后通过@Value、@ConfigurationProperties 等方法从配置文件中获取 测试代码: @Value会导致启动报错,无法启动项目: 把@Value注释,启动正常,但是**@ConfigurationProperties获取到的值是0** 我们知道springboot默认的po

    2023年04月08日
    浏览(43)
  • java根据服务器(linux)端ip+文件路径将服务器端文件下载到本地

    jsch:Maven Repository: com.jcraft » jsch » 0.1.55 (mvnrepository.com)​​​​​  

    2024年02月11日
    浏览(60)
  • java获取当前服务器状态cpu、内存、存储等核心信息

    目录 1.需要导入依赖包  2.系统自带参数 3.获取当前服务器状态cpu、内存、存储等核心信息  4.引入包后方法不存在  5. 获取的cpu利用率和任务管理器cpu利用率值差距问题   RESULT: RESULT:  需要引入下面的包:  就是需要配置在 CentralProcessor 实例化之前:配置上也会有差距,相

    2024年02月03日
    浏览(45)
  • Java 使用oshi获取当前服务器状态cpu、内存、存储等核心信息

    OSHI 是基于 JNA 的(本地)操作系统和硬件信息库。它不需要安装任何其他额外的本地库,旨在提供一种跨平台的实现来检索系统信息,例如操作系统版本、进程、内存和 CPU 使用率、磁盘和分区、设备、传感器等。 使用 OSHI 可以对应用程序进行监控,可以对应用程序所在的服

    2024年02月03日
    浏览(49)
  • js获取当前服务器的ip

    如果提供的服务不是域名,而是ip形式,获取当前服务器的IP地址,可以使用JavaScript中的 window.location 对象。 window.location 对象包含当前页面的URL信息,包括主机名、协议、端口号等。可以从 window.location 对象中提取服务器的IP地址。 使用 window.location.hostname 属性获取当前服务器

    2024年02月11日
    浏览(52)
  • 如何一键部署本地Java项目到服务器上

    我开发了一个Java代码,现在想部署到服务器上,当然可以使用Jenkins部署,但是Jenkins配置和维护成本比较高,所以我今天分享的是轻量级的一键部署脚本 演示:本地Window的Java代码 - Vmware虚拟机Centos7上 如果你的项目结构不同,可以根据项目结构自行调整 1、对项目进行Maven编

    2024年01月20日
    浏览(51)
  • vue打包部署到服务器,动态获取(修改)对应服务器的请求ip

    需求: vue打包后的文件要部署到不同的服务器上,ip不同,每次部署都要修改对应服务器的ip后打包上线,所以会出现频繁打包的情况 问题:vue项目打包上线不同服务器,需要打包一次能够动态的修改ip地址 思路1: 1.由于vue项目里面public文件在打包时不会被影响,所以可以在

    2024年02月05日
    浏览(43)
  • 【Java】 服务器cpu过高如何排查和解决?

    对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考讨论提高。 线上系统突然运行缓慢,CPU飙升,甚至到100%,以及Full GC次数过多,接着就是各种报警:例如接口

    2024年02月11日
    浏览(52)
  • 【通过URL获取目标服务器IP和端口号】

    1.1 域名解析 URL中的域名需要先经过域名解析,将其转换为对应的IP地址。域名解析通过DNS(域名系统)进行,将域名映射到IP地址。DNS使用层次化的命名体系,包括根域、顶级域、二级域等。域名解析的过程涉及到递归查询、迭代查询和缓存等机制。 1.2 DNS查询 在进行域名解

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包