我正在尝试使用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;
}
答案 0 :(得分:0)
如果您在NAT之后并且您的PHP服务器在网络之外,您将获得不同的结果。您的PHP代码将返还您的外部/公共IP地址,而您的Android代码将返还您的NAT路由器后面的LAN上电话所使用的私有IP地址。