21xrx.com
2024-11-22 11:10:36 Friday
登录
文章检索 我的文章 写文章
Java代码实现获取IP地址
2023-06-15 07:18:59 深夜i     --     --
Java IP地址 InetAddress Servlet

在Java中,获取IP地址有多种方式,下面我们来一一介绍。

1.使用InetAddress类

InetAddress类是Java中用于代表IP地址的类,它可以用来获取本地主机的IP地址或者指定主机的IP地址。以下是获取本地主机IP地址的例子:


InetAddress inetAddress = InetAddress.getLocalHost();

String ip = inetAddress.getHostAddress();

如果想获取远程主机的IP地址,则需要传入主机名或主机IP地址:


InetAddress inetAddress = InetAddress.getByName("www.example.com");

String ip = inetAddress.getHostAddress();

2.使用Servlet API

在Servlet中,可以使用HttpServletRequest对象获取访问者IP地址。以下是一个获取IP地址的例子:


public String getIpAddr(HttpServletRequest request) {

  String ip = request.getHeader("x-forwarded-for");

  if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){

    ip = request.getHeader("Proxy-Client-IP");

  }

  if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){

    ip = request.getHeader("WL-Proxy-Client-IP");

  }

  if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){

    ip = request.getRemoteAddr();

  }

  return ip;

}

3.使用网络接口

另外一种获取IP地址的方法是使用Java的网络接口。以下是获取本地主机IP地址的例子:


Enumeration interfaces = NetworkInterface.getNetworkInterfaces();

while (interfaces.hasMoreElements()){

  NetworkInterface networkInterface = interfaces.nextElement();

  Enumeration addresses = networkInterface.getInetAddresses();

  while (addresses.hasMoreElements()){

    InetAddress inetAddress = addresses.nextElement();

    if(inetAddress instanceof Inet4Address && !inetAddress.isLoopbackAddress()){

      String ip = inetAddress.getHostAddress();

      //返回第一个不是环回地址的IPv4地址

      return ip;

    }

  }

}

总结:

以上就是Java中获取IP地址的几种方法,可以根据自己的需要进行选择。其中,使用InetAddress类和网络接口的方法比较适合获取本地主机的IP地址,而使用Servlet API的方法则比较适合获取访问者的IP地址。

API,网络接口。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复