- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
InetAddress.getByName("127.0.0.1").getHostName()
上面的String
在Windows中返回127.0.0.1
,但在Linux中它返回localhost
。
InetAddress#getHostName
的文档说:
If this InetAddress was created with a host name, this host name will be remembered and returned; otherwise, a reverse name lookup will be performed and the result will be returned based on the system configured name lookup service.
我见过this question ,但我的问题是关于 Windows 和 Linux 中 API 行为的差异以及造成这种差异的原因。
最佳答案
因此,Windows 和 Linux 之间没有主要区别。不过两者的配置还是有区别的。正如您引用的问题中所述,这取决于 hosts
文件中的内容。这是一个在 Windows 和 Linux 上都有的文件,它告诉操作系统哪些 IP 可以分配给特定的主机名。以下是文件中的示例条目:
127.0.0.1 localhost
这将告诉操作系统,如果我向 localhost
发出请求,只需将请求路由到 127.0.0.1
。它类似于 DNS 服务器的作用,但该过程发生在您的计算机上,无需检查互联网。
现在,谈谈为什么该行在不同平台上发生变化。文档是这样说的:
If this InetAddress was created with a host name, this host name will be remembered and returned; otherwise, a reverse name lookup will be performed and the result will be returned based on the system configured name lookup service. If a lookup of the name service is required, call getCanonicalHostName.
此部分引用 hosts
文件中指定的主机名。在 Linux 系统上,hosts
文件有一个与上面类似的条目(这在 Linux 环境中很常见)。 Java 注意到了这一点,并返回该值而不是 IP。由于 Windows 上没有这样的条目,因此它只是简单地返回 IP。
关于java - Windows 和 Linux 中 InetSocketAddress#getHostName 对于 "127.0.0.1"的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55521964/
有没有办法将字符串参数传递给 InetSocketAddress 的参数? 这是生成代理的正确方法: SocketAddress addr = new InetSocketAddress("127.0
我正在尝试填充主机 header 。我已经为我的示例插入了虚拟数据,但我想知道我是否正确填充了该数据。当检查地址的值时,它似乎与我的预期不同。我期望 [域名]:[端口],但我看到 [域名]/[IP 地
我有以下代码: socket.connect(new InetSocketAddress(serverHost, serverPort), CONNECT_TIMEOUT); 问题是当 DNS 不可访
在构造函数的文档中 InetSocketAddress(int port)它说: Creates a socket address where the IP address is the wildca
谁能解释一下 InetAddress 之间有什么区别吗?和 InetSocketAddress java中的类,如果有差异,请解释相同。我用谷歌搜索了它,但找不到任何解释。 最佳答案 InetAddr
我在与主机名中带有重音符号 (é è ô...) 的服务器建立连接时遇到问题。 例如: String oUrl = "www.hôtel.fr"; System.out.println(oUrl)
我需要为 InetSocketAddress 编写 Comparator,这样我就可以在 TreeSet 中使用此类。它们需要通过地址和端口进行比较。 代码看起来像这样,但问题是我不知道如何通过 (1
为什么我们必须创建一个InetSocketAddress对象? 但是对于ServerSocket,我们只需使用int来输入端口号 示例: try( ServerSocketChanne
我进行了很多搜索,但无法找到两者之间的直接区别。在创建客户端套接字时,我们什么时候使用每一个? 最佳答案 InetSocketAddress 不以任何方式管理 Socket。 我认为你的意思是 Soc
我正在 InetSocketAddress 上执行 .toString()。这是 Android websocket 客户端的一部分,迄今为止无法连接到主机。 现在变量 address.toStrin
首先:我对 Spring 非常陌生,因此,如果我未能提供该问题所需的所有信息,我很抱歉。我的问题如下:我有以下类,我想将哪些对象保存在 mongoDB 中 public class Subscript
这是我尝试过的: @Test public void local_host_test() { InetAddress inetAddress = Mockito.mock(InetAddres
我正在使用一个使用开源 java 库 (Calimero) 的 Android 应用程序。我的代码尝试使用以下代码获取主机名和端口: private static KNXNetworkLinkIP c
我想要实现的目标 将服务器绑定(bind)到临时端口以进行单元测试。 我的问题: 使用 1.5.0_22 JDK,我尝试按照 javadoc 使用端口 0 将 InetSocketAddress 绑定
我想创建一个 InetSocketAddress,但无论我得到的是 host:port 还是 ip:port,我都想正确地创建它。我看到它有两个构造函数,一个用于主机 (String),另一个用于 I
当我启动通过elasticsearch java api 与ElasticSearch 5.6.10 交互的java 应用程序并且我的elasticsearch 集群有超过1 个节点时,我收到以下异常
我正在寻找 ipv4 和 ipv6 的测试正则表达式 InetSocketAddress (即 IP 地址 + 端口号)。我对验证主机名不感兴趣。 它可以是两个正则表达式(一个用于 ipv4,一个用于
我正在尝试以字符串形式获取套接字连接的 IP。 我正在使用一个框架,它返回接收到的消息的 SocketAddress。我如何将其转换为 InetSocketAddress 或 InetAddress?
我需要有效地确定 InetSocketAddress 是 IPv6 还是 IPv4。我能看到的唯一两种方法是使用 instanceof 运算符,或者检查 getAddress() 的长度(应该返回一个
Java 中验证 host:port 形式的字符串并将其转换为 InetSocketAddress 实例的常用方法是什么? 如果满足以下条件就好了: 没有地址查找; 适用于 IPv4、IPv6 和“字
我是一名优秀的程序员,十分优秀!