【问题标题】:Get IPv4 address of client获取客户端的 IPv4 地址
【发布时间】:2015-06-04 05:48:49
【问题描述】:

我有一个 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());
}

【问题讨论】:

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


    【解决方案1】:

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

    如今,您不能再假设存在 IPv4。互联网的某些部分仅支持 IPv6。 Facebook data centres 是第一个大规模示例,但 Google 是 IPv6 的大力支持者,因此在那里看到类似的东西我不会感到惊讶。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 2016-03-27
      • 1970-01-01
      • 2019-01-14
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      相关资源
      最近更新 更多