登录
首页 >  文章 >  java教程

Java获取本机和服务器IP地址的技巧

时间:2025-11-07 09:06:30 171浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《Java获取本机与服务器IP地址的方法》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

答案:通过InetAddress获取本机IP,推荐遍历NetworkInterface排除回环地址;服务器IP用getByName解析域名;Web应用中通过HttpServletRequest获取客户端和服务端IP,注意处理X-Forwarded-For头。

java怎么获取服务器的IP地址 获取本机与服务器IP地址的方法

在Java开发中,获取本机IP地址和服务器IP地址是网络编程中的常见需求。以下介绍几种实用的方法,帮助你在不同场景下正确获取IP信息。

获取本机IP地址

本机IP通常指当前运行Java程序的机器在网络中的IP地址。可以通过java.net.InetAddress类来获取:

方法一:获取本地主机IP

import java.net.InetAddress;
import java.net.UnknownHostException;

public class LocalIP {
    public static void main(String[] args) {
        try {
            InetAddress localHost = InetAddress.getLocalHost();
            System.out.println("本机IP地址: " + localHost.getHostAddress());
            System.out.println("本机主机名: " + localHost.getHostName());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

注意:getLocalHost()返回的是系统默认的网络接口,可能返回IPv6地址或127.0.0.1(回环地址),在某些情况下并不准确。

方法二:遍历所有网络接口(推荐)

如果需要排除回环地址并获取真实的外网IP,应遍历所有网络接口:

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

public class RealLocalIP {
    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface ni = interfaces.nextElement();
                if (ni.isLoopback() || !ni.isUp()) continue; // 跳过回环和未启用的接口

                Enumeration<InetAddress> addresses = ni.getInetAddresses();
                while (addresses.hasMoreElements()) {
                    InetAddress addr = addresses.nextElement();
                    if (!addr.isLoopbackAddress() && addr instanceof java.net.Inet4Address) {
                        System.out.println("真实IP地址: " + addr.getHostAddress());
                    }
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

获取服务器IP地址

“服务器IP”通常指远程服务的IP地址,比如你访问的Web服务器。可以通过域名解析获取:

import java.net.InetAddress;

public class ServerIP {
    public static void main(String[] args) {
        try {
            InetAddress address = InetAddress.getByName("www.baidu.com");
            System.out.println("百度服务器IP: " + address.getHostAddress());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

该方法通过DNS解析将域名转换为IP地址,适用于HTTP、TCP等客户端连接前的准备阶段。

在Web应用中获取客户端与服务器IP

如果是Java Web项目(如Servlet),可以通过HttpServletRequest获取连接信息:

  • 获取服务器IPrequest.getServerName()request.getLocalAddr()
  • 获取客户端IPrequest.getRemoteAddr(),但要注意代理情况

处理反向代理时,建议检查X-Forwarded-For头:

String clientIP = request.getHeader("X-Forwarded-For");
if (clientIP == null || clientIP.isEmpty()) {
    clientIP = request.getRemoteAddr();
}

基本上就这些。根据使用场景选择合适的方法,本地调试可用getLocalHost,生产环境建议遍历网络接口,远程服务用getByName解析,Web应用注意请求头处理。不复杂但容易忽略细节。

今天关于《Java获取本机和服务器IP地址的技巧》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>