获取客户端的IPv4地址

时间:2015-06-04 05:48:49

标签: android google-app-engine restlet android-networking ipv4

我有一个Android应用程序,可以对我的后端服务器(Google App Engine [GAE])进行简单的REST调用。在我的GAE上,我试图提取连接的IPv4地址,并且我总是获得IPv6地址。

我用它来提取ipAddress。另外,我已经检查过ClientInfo中的所有函数都返回NULL或IPv6地址。

有什么建议吗?

ip = headers.getFirstValue("X-FORWARDED-FOR");  
if (ip == null || ip.equals("")) {  
    ClientInfo clientInfo = request.getClientInfo();
    ip = clientInfo.getAddress();
}
else
{
    ClientInfo clientInfo = request.getClientInfo();
    LOG.info("X-FORWARDED-FOR IP:"+ip+" Other IP:"+clientInfo.getAddress());
}

1 个答案:

答案 0 :(得分:1)

连接是IPv4或IPv6。如果连接通过IPv6进入,则无需知道IPv4地址。如果从前端负载均衡器到GAE实例的连接是IPv6,那么它就是什么,你必须处理它。

现在你不能再认为有IPv4了。互联网的某些部分仅限IPv6。 Facebook data centres是第一个大规模的例子,但谷歌是一个重要的IPv6支持者,因此我不会对看到类似的东西感到惊讶。