【问题标题】:About getting IP address by name关于按名称获取 IP 地址
【发布时间】:2017-06-29 02:07:48
【问题描述】:

我想验证关于InetAddress.getByName(String) 的一件事。

例如,有一个应用程序向它的服务器发送请求 www.coolapp.com ,我可以通过以下方式获取该服务器的IP地址:

String serverIp = InetAddress.getByName("www.coolapp.com");

但是如果应用程序设计为连接到不同的地理服务器,这个函数是否返回应用程序连接的服务器的相应IP,尽管主机名是相同的“www.coolapp.com”?

例如,我在欧洲使用的app,它连接到德国的服务器,服务器主机名是“www.coolapp.com”,IP是182.12.12.12。那么,如果我去日本旅游,app正在连接“www.coolapp.com” IP是123.13.13.13 API会根据地理位置返回对应的IP吗?

【问题讨论】:

    标签: java networking network-programming


    【解决方案1】:

    InetAddress.getByName() 执行 DNS 查询,因此应用 DNS 规则。

    在 DNS 中,您可以在不同的地理位置获取不同的 IP。然而,DNS 还允许每个 DNS 名称定义更多 IP (link)。在这种情况下,大多数 DNS 解析器会在地址之间交替,因此即使在一个地理位置,您也可能在两个连续查询中获得不同的 IP。这可能会导致您无法获得已连接的相同 IP。

    请注意,这可能会受到途中或您计算机上的任何缓存的影响。

    【讨论】:

      猜你喜欢
      • 2011-08-14
      • 2014-08-08
      • 1970-01-01
      • 2012-08-02
      • 2017-05-24
      • 1970-01-01
      • 2014-05-28
      • 2016-02-04
      • 2013-07-31
      相关资源
      最近更新 更多