您的位置:

Java获取IP地址

一、获取本机IP地址

Java可以通过InetAddress类获取本机的IP地址,InetAddress是Java中表示IP地址的类,它可以创建InetAddress对象表示指定主机名对应的IP地址或表示IP地址字符串对应的IP地址。

示例代码如下:

import java.net.InetAddress;

public class GetLocalIpAddress {

    public static void main(String[] args) throws Exception{
        InetAddress IP=InetAddress.getLocalHost();
        System.out.println("本机IP地址为:"+IP.getHostAddress());
    }

}

运行结果如下:

本机IP地址为:192.168.1.1

二、获取指定域名的IP地址

Java可以通过InetAddress类获取指定域名的IP地址,通过域名解析得到对应的IP地址。

示例代码如下:

import java.net.InetAddress;

public class GetIpAddress {

    public static void main(String[] args) throws Exception{
        InetAddress address = InetAddress.getByName("www.baidu.com");
        System.out.println("百度IP地址为:" + address.getHostAddress());
    }

}

运行结果如下:

百度IP地址为:104.193.88.74

三、获取本机所有IP地址

一个主机可能有多个IP地址,可以通过NetworkInterface类获取该主机所有与网络接口相关的IP地址。

示例代码如下:

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

public class GetAllIpAddress {

    public static void main(String[] args) throws Exception{
        Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
        while(interfaces.hasMoreElements()){
            NetworkInterface networkInterface = interfaces.nextElement();
            Enumeration
    addresses = networkInterface.getInetAddresses();
            while(addresses.hasMoreElements()){
                InetAddress address = addresses.nextElement();
                if (!address.isLinkLocalAddress() && !address.isLoopbackAddress() && address.isSiteLocalAddress()){
                    System.out.println(networkInterface.getName() + " " + address.getHostAddress());
                }
            }
        }
    }

}

   
  

运行结果如下:

eth0 192.168.1.1
eth1 10.10.10.1

四、总结

通过InetAddress类和NetworkInterface类,在Java中可以方便地获取本机IP地址、指定域名的IP地址、以及本机所有的IP地址。