您当前的位置:首页 > 互联网教程

JavaWeb如何获取当前访问IP

发布时间:2025-05-21 22:01:10    发布人:远客网络

JavaWeb如何获取当前访问IP

一、JavaWeb如何获取当前访问IP

背景

在进行JavaWeb开发时,通过会记录日志,在记录日志的时候,就会存在客户端的ip存储,那么如何获取客户端对应的ip呢?

在进行JavaWeb开发时,通过会记录日志,在记录日志的时候,就会存在客户端的ip存储,那么如何获取客户端对应的ip呢?

客户端的访问ip,是可以通过Request对象来获取,代码如下,也是我在项目中经常使用到的工具类。

可以通过调用此工具类来获取到当前客户端访问的IP地址了。

其实这里面也存在一些特殊的情况,客户端可能通过代理的方式进行调用后端代码,所以这里的ip其实可能并不是真实的地址。

还有就是如果通过转发的话,ip的获取也可能会有所差异。

所以大家在使用获取ip的情况下,还是不要太过依赖于他。

二、Java怎样获取当前机器外网IP

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

*思想是访问网站,得到返回的文本后解析出本机在外网的IP地址

public class ExternalIpAddressFetcher{

private String externalIpProviderUrl;

private String myExternalIpAddress;

public ExternalIpAddressFetcher(String externalIpProviderUrl){

this.externalIpProviderUrl= externalIpProviderUrl;

String returnedhtml= fetchExternalIpProviderHTML(externalIpProviderUrl);

*从外网提供者处获得包含本机外网地址的字符串

*从返回的字符串如下

*<html><head><title>Current IP Check</title></head><body>Current IP Address: 123.147.226.222</body></html>

private String fetchExternalIpProviderHTML(String externalIpProviderUrl){

HttpURLConnection httpConn= null;

URL url= new URL(externalIpProviderUrl);

httpConn=(HttpURLConnection) url.openConnection();

HttpURLConnection.setFollowRedirects(true);

httpConn.setRequestMethod("GET");

httpConn.setRequestProperty("User-Agent",

"Mozilla/4.0(compatible; MSIE 6.0; Windows 2000)");

in= httpConn.getInputStream();

byte[] bytes=new byte[1024];//此大小可根据实际情况调整

&&(numRead=in.read(bytes, offset, bytes.length-offset))>= 0){

String receivedString=new String(bytes,"UTF-8");

} catch(MalformedURLException e){

*使用正则表达式解析返回的HTML文本,得到本机外网地址

private void parse(String html){

Pattern pattern=Pattern.compile("(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})", Pattern.CASE_INSENSITIVE);

Matcher matcher=pattern.matcher(html);

myExternalIpAddress=matcher.group(0);

*得到本机外网地址,得不到则为空

public String getMyExternalIpAddress(){

public static void main(String[] args){

ExternalIpAddressFetcher fetcher=new ExternalIpAddressFetcher("");

System.out.println(fetcher.getMyExternalIpAddress());

三、java怎么获取当前机器ip和容器port

1、在使用Docker启动容器时,容器本身并不包含主机的IP信息,因此必须通过参数传递的方式让容器获得这些信息。

2、容器技术是一种隔离技术,本身不具备网络体系,需要自行构建网络环境。因此,动态获取宿主机的IP地址需要了解当前的基础环境是什么。例如,如果你正在使用Kubernetes(K8S)环境,那么可以很方便地确定容器运行在哪台主机上。

3、在Kubernetes环境中,可以通过执行命令:

4、来获取容器运行的具体信息,从而确定其所在的主机IP。

5、另外,获取容器的端口也很重要。通常,容器内的应用程序会绑定到一个特定的端口,而这个端口需要映射到宿主机的某个端口上,以便外部可以访问。这种映射关系可以通过Docker的运行参数或者Kubernetes的配置文件来设置。

6、在Java应用中,可以通过以下方式获取容器的端口信息:

7、int port= Integer.parseInt(System.getenv("PORT"));

8、这种方式适用于通过环境变量传递端口信息的场景。在实际应用中,你需要确保容器启动时已经正确设置了这些环境变量。

9、对于获取宿主机IP,可以使用如下Java代码:

10、String hostIp= InetAddress.getLocalHost().getHostAddress();

11、这段代码会返回容器所在的宿主机的IP地址。

12、综上所述,通过参数传递和环境变量的方式,Java应用可以轻松获取到当前容器的IP地址和端口信息。