客户端的外部IP地址

Den*_*ees 6 java external ip-address

听起来很有趣,但我如何从客户端获取外部IP地址?

我尝试了一些东西,但对我没用.

首先,我试过

request.getRemoteAddr()
Run Code Online (Sandbox Code Playgroud)

我得到的结果为:0:0:0:0:0:0:0:1

在第二位,我试过

InetAddress ip = InetAddress.getLocalHost();
ip.getHostAddress());
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:127.0.0.1

在第三位我试过了

        URL whatismyip = new URL("http://checkip.dyndns.org:8245/");
        BufferedReader inIP = new BufferedReader(new InputStreamReader(whatismyip.openStream()));

        String IPStrOld = inIP.readLine(); //IP as a String
        String IPStrNewest = IPStrOld.replace("<html><head><title>Current IP Check</title></head><body>Current IP Address: ", "");
        String IPStr = IPStrNewest.replace("</body></html>", "");
Run Code Online (Sandbox Code Playgroud)

但我只获得服务器的外部IP

并为最后一个地方

        URL whatismyip = new URL("http://automation.whatismyip.com/n09230945.asp");
        BufferedReader inIP = new BufferedReader(new InputStreamReader(whatismyip.openStream()));
        String ip = inIP.readLine();
Run Code Online (Sandbox Code Playgroud)

这是一样的,我只得到服务器的外部IP

那么,这笔交易是什么?

sje*_*397 4

如果您的客户端使用NAT(网络地址转换),它可能没有外部地址。根据我的经验,大多数情况都是这种情况。在工作中,我的网络请求通过代理,因此网络服务器只能确定该地址。在家里,我通过服务器使用 NAT,因此我正在打字的这台笔记本电脑没有外部地址。最接近的是从“whatismyip”(我的服务器地址)返回的内容,我有时可以通过它转发通往我的笔记本电脑的端口。