获取客户端IP地址

时间:2018-08-07 07:29:39

标签: php android networking ip

我正在尝试使用php中的url获取客户端的ip地址,并使用已安装的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;
    }

1 个答案:

答案 0 :(得分:0)

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