JavaWeb如何获取当前访问IP
发布时间:2025-05-21 22:01:10 发布人:远客网络
一、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地址和端口信息。