- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
用下面的代码
InetAddress.getLocalHost().getHostAddress();
可以获取主机地址。但是 JVM 是如何发现它的呢?
Java API 只告诉您它返回它 ( API Reference ),但是否涉及 DNS 服务器,如果是,何时调用?
如果只调用一次,服务器名称如何保存在本地?
最佳答案
实际的实现是使用 JNI 在 native 代码中完成的,因此它会因平台而异。
也就是说,没有理由需要执行 DNS 来查找网卡所在机器上的 IP 地址。直接读取网卡的ip信息即可。
坏消息:无法确定这是否会在 Java 运行的任何平台上执行 DNS 查找,因为它是 native 代码,并且机器执行 DNS 查找的可能性即使它是实际上没有必要存在。
好消息:在我的 linux 机器上,它不执行 DNS 查找(通过 wireshark 确认),这正是我所期望的。如果您认为它在进行查找,那么它进行查找的原因有很多(取决于您的 native 绑定(bind)客户端的可配置性),如果您安装了 wireshark(或使用合适的网络分析器),您可以快速找到如果你正在查找自己。
编辑:请注意,名称查找将位于链式调用的 .getLocalHost()
部分,如果要查找的话。
关于java - InetAddress.getLocalHost().getHostAddress();涉及 DNS 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7388847/
我使用的是 Windows 8 和 JDK 1.7。我的IP地址是192.168.1.108,当我运行时: System.out.println(InetAddress.getLocalHost().
我正在尝试使用“isReachable”方法检查某个主机是否可达。 line 113: oaiBaseURL = "http://www.cnn.com";//////////////////////
我向所有 Java 专家提出以下问题。 我正在尝试想出一种可靠的方法来创建 localHost InetAddress 对象,作为 InetAddress.getLocalHost() 的后备方法。
我使用以下代码来检查所提供的 IP 在 java 中是否可访问。 public String isNetworkReachable(){ int timeout = 2000;
我想要 InetAddress 的实例,但不想像强制该类的每个工厂方法那样将其放入 try-catch 中: InetAddress addr = InetAddress.getByAddress(i
我解析各种包含网络信息的数据源。 我一直在使用java.net.InetAddress来表示和解析主机。用 IP 初始化它工作正常。 我现在必须解析一个新的来源。它包含主机名而不是 IP。 InetA
由于某种原因,我似乎无法初始化 InetAddress 对象,我查看了文档,它与我的使用方式完全相同。 InetAddress firstMachineAddress = InetAddress.g
这个问题已经有答案了: Creating InetAddress object in Java (7 个回答) 已关闭 8 年前。 我知道如何使用它的静态方法为受试类创建一个实例,但有一些我无法理解的
我有下面的代码,在继续之前我用它来获取服务器的完整规范主机名。这将在我的服务器上返回一个值(特别是不同的域)。命令行上的 nslookup 返回正确的值。 我试图了解 java.inet 在内部到底做
我是 Java 的新手,但不是编程人员,我遇到了这个问题: InetAddress localAddress = InetAddress.getLocalHost(); 它让我很反感。我们将 loca
谁能解释一下 InetAddress 之间有什么区别吗?和 InetSocketAddress java中的类,如果有差异,请解释相同。我用谷歌搜索了它,但找不到任何解释。 最佳答案 InetAddr
我正在尝试了解 InetAddress.getLocalHost() 的工作原理。 Javadoc表示它从系统中检索主机名,然后将其解析为 InetAddress。 “解析为 InetAdess”到底
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
这个问题已经有答案了: Slash before InetAddress.getByName(host) (2 个回答) 已关闭 9 年前。 我想我的问题对于这里的人来说很容易回答吗?问题是,当我执行
我试图每 10 秒循环 ping 200 个 IP。因此,该循环每 10 秒执行一次。我使用此代码来 ping IP for (i = 0; i <= 200; i++ ) { ProcessB
在我的 Java 应用程序中,我需要一次获取多个连接的 ping,我尝试过为每个连接使用一个线程并测量响应时间,但它们似乎并不都是正确的。 是否有线程安全的方法来测量连接的 ping/响应时间?我目前
我有这个代码: import java.net.InetAddress; import java.net.UnknownHostException; public class NsLook
我在尝试模拟 InetAddress 中的静态方法时遇到了奇怪的问题。我能够成功地为许多其他类模拟静态方法并且一切正常,但 InetAddress 显示不同的行为。我正在使用 JUnit 4.x、Mo
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我正在使用 Java InetAddress 来查找当前的互联网连接是否可以通过 DNS 解析地址。但是,如果我输入一个随机地址(互联网上绝对不存在的地址),我仍然会得到一个 IP,谁能解释为什么会出
我是一名优秀的程序员,十分优秀!