我想验证关于InetAddress.getByName(String)的一件事。
例如,有一个应用程序向其服务器发送名为 www.coolapp.com 的请求,我可以通过以下方式获取此服务器的IP地址:
String serverIp = InetAddress.getByName("www.coolapp.com");
但如果应用程序设计为在地理位置连接到不同的服务器,此功能是否会返回应用程序连接到的服务器的相应IP,尽管主机名是相同的" www.coolapp.com" ?
例如,我在欧洲使用该应用程序,它连接到德国的服务器,服务器主机名是" www.coolapp.com" IP是182.12.12.12。然后,如果我去日本,该应用程序将连接到" www.coolapp.com" IP是123.13.13.13 API是否会根据地理位置返回相应的IP?
答案 0 :(得分:1)
InetAddress.getByName()
执行DNS查询,因此适用DNS规则。
在DNS中,您可以在不同的地理位置获取不同的IP。但是,DNS还允许为每个DNS名称(link)定义更多IP。在这种情况下,大多数DNS解析器在地址之间交替,因此即使在一个goegraphical位置,您可能会在两个连续查询中获得不同的IP。这可能会导致您无法获得与之相关的IP。
请注意,这可能会受到途中或计算机上的任何缓存的影响。