【问题标题】:Getting Client IP Address获取客户端 IP 地址
【发布时间】:2019-01-14 05:09:08
【问题描述】:

我正在尝试使用来自 php 的 url 和使用他安装的 android 应用程序从同一设备获取客户端的 IP 地址,但在这两种情况下我都获得了 2 个不同的 IP 地址。谁能解释一下原因,为什么?

PHP 代码 --

function getRealIpAddr()
    {
        if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
        {
          $ip=$_SERVER['HTTP_CLIENT_IP'];
        }
        elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
        {
          $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
          $ip=$_SERVER['REMOTE_ADDR'];
        }
        return $ip;
    }

Android 代码 --

public String getLocalIpAddress() {
        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()) {
                        String ip = Formatter.formatIpAddress(inetAddress.hashCode());
                        Log.i("IP Address", ip);
                        return ip;
                    }
                }
            }
        } catch (SocketException ex) {
            Log.e("Error IP", ex.toString());
        }
        return null;
    }

【问题讨论】:

  • 在android中,如果使用WIFI,它会给你本地网络IP。您基本上永远无法期望您可以在客户端获得客户端真实IP地址。
  • 在我的场景中,我使用的是移动互联网,并且仅从我的手机上单击了两个链接,因此它应该显示来自 php 代码和 android 代码的相同 IP 地址。但它显示两个代码的 2 个不同的 IP 地址。
  • 正如我所说,您的移动 ISP 可能不会给您您的真实 IP 地址,而是使用代理或其他任何方式。永远不要期望它是真实的。

标签: php android networking ip


【解决方案1】:

如果您在 NAT 之后并且您的 PHP 服务器在您的网络之外,您将获得不同的结果。您的 PHP 代码将返回您的外部/公共 IP 地址,而您的 Android 代码将返回您的手机在 LAN 上使用的私有 IP 地址,位于您的 NAT 路由器后面。

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 2011-05-26
    • 2019-11-13
    • 1970-01-01
    • 2011-01-08
    • 2014-12-29
    • 2012-03-14
    • 2015-03-01
    • 2016-01-26
    相关资源
    最近更新 更多