一尘不染

在Java中获取“外部” IP地址

java

我不太确定如何获取计算机的外部IP地址,就像网络外部的计算机会看到它一样。

我下面的IPAddress类仅获取计算机的本地IP地址。

public class IPAddress {

    private InetAddress thisIp;

    private String thisIpAddress;

    private void setIpAdd() {
        try {
            InetAddress thisIp = InetAddress.getLocalHost();
            thisIpAddress = thisIp.getHostAddress().toString();
        } catch (Exception e) {
        }
    }

    protected String getIpAddress() {
        setIpAdd();
        return thisIpAddress;
    }
}

阅读 532

收藏
2020-03-04

共1个答案

一尘不染

我不确定是否可以从在本地计算机上运行的代码中获取该IP。

但是,你可以构建在网站上运行的代码(例如在JSP中运行),然后使用返回请求来源IP的内容:

request.getRemoteAddr()

或者只是使用已经存在的服务来执行此操作,然后解析该服务的答案以找出IP。

使用AWS等Web服务

import java.net.*;
import java.io.*;

URL whatismyip = new URL("http://checkip.amazonaws.com");
BufferedReader in = new BufferedReader(new InputStreamReader(
                whatismyip.openStream()));

String ip = in.readLine(); //you get the IP as a String
System.out.println(ip);
2020-03-04