【发布时间】:2016-04-04 22:44:35
【问题描述】:
我有一个内置的 PHP HTTP 服务器启动为
php -S localhost:8080
它显然使用 IPv6 进行监听:
tcp6 0 0 ::1:8080 :::* LISTEN 2642/php
使用java.net.HttpURLConnection 我尝试连接到它。但是我得到了异常java.net.ConnectException: Connection refused。
一旦我这样做了System.setProperty("java.net.preferIPv6Addresses", "true");,当然一切正常。不过,这对我来说似乎是一个黑客行为。 Java 实现应该使用默认设置。
问题:为什么 Java 没有检测到正确的 Internet 协议?是错误还是我的操作系统 (Linux) 配置错误?
【问题讨论】:
-
这是一个很好的问题,我很想知道为什么 Java 没有更忠实地遵循现有的约定。似乎这些在每个平台上都重新实现为粗略近似cr.openjdk.java.net/~michaelm/7120875/webrev.3/src/macosx/…
-
嗯。奇怪的。 Gist: This program 在 Mac 上对我来说似乎工作正常(服务器使用 IPv6)。上述属性为
null。 -
该主机涉及的 DNS 记录有哪些?会不会是一个非功能性 IP4 地址的 A 记录?