【发布时间】: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