Java应该自动检测IPv4/IPv6吗?
我有一个内置的PHP HTTP服务器,以Java应该自动检测IPv4/IPv6吗?,java,ipv6,ipv4,Java,Ipv6,Ipv4,我有一个内置的PHP HTTP服务器,以 php -S localhost:8080 它显然使用IPv6进行监听: tcp6 0 0 ::1:8080 :::* LISTEN 2642/php 使用java.net.HttpURLConnection我尝试连接到它。但是我得到了异常java.net.ConnectException:连接被拒绝 一旦我做了System.setProperty(“java.net.preferipv6address”,“true”
php -S localhost:8080
它显然使用IPv6进行监听:
tcp6 0 0 ::1:8080 :::* LISTEN 2642/php
使用java.net.HttpURLConnection
我尝试连接到它。但是我得到了异常java.net.ConnectException:连接被拒绝
一旦我做了System.setProperty(“java.net.preferipv6address”,“true”)代码>当然,一切正常。不过,这对我来说似乎是一个难题。Java实现应该使用默认设置
问:为什么Java没有检测到正确的Internet协议?这是我的操作系统(Linux)的错误配置还是错误配置?Java(至少Oracle或OpenJDK到Java 8)没有正确实现地址选择。我在一段时间前提到过这个,但是没有太大的吸引力
默认模式是首选双堆栈/IPv6地址系列,但首选连接到IPv4地址。这就是您可以使用首选IPV6Address=true影响的内容。根据该委员会的意见,这是出于兼容性原因作出的决定
在您的情况下,您可以连接到“::1”IPv6文本或添加一个现在的localhost6别名(因为它还可以处理没有ipv4地址的地址条目)
特别是对于“localhost”,不管怎样,很多配置错误的系统都存在。这是一个很好的问题,我很想知道为什么Java没有更忠实地遵循现有的约定。似乎这些都是在每个平台上重新实现的,因为粗略的近似于嗯。奇怪。似乎在Mac上对我很好(服务器使用IPv6)。并且所述属性为null
。此主机涉及哪些DNS记录?可能是因为它有一个指向非功能IP4地址的A记录吗?我向网络开发人员发送了一个提醒