在实际的Java程序中使用IPv6
IPv6使用现在正在慢慢开始,因此我目前正在修复和更新所有为IPv6做好准备的应用程序.
其中一个应用程序是Java编辑器JOSM(http://josm.openstreetmap.de/).即使操作系统使用IPv6,Java也不会在默认配置中使用IPv6. 根据 似乎Java只切换到使用IPv6地址而不是IPv4,但不做其他事情.我维护的所有基于C/C++的软件都已更改为检查并尝试所有可用的IP地址,因此只要其中一个地址有效,就会跳过损坏的IPv6(或IPv4)地址.对我来说,看起来Java只尝试一次,这在现实世界中不起作用. 当IPv6通过隧道传输时,OS通常也更喜欢IPv4而不是IPv6.看起来Java也忽略了这个设置. 所以我的问题是:在没有破坏IPv4用户的应用程序的情况下,有没有什么好方法可以让Java应用程序默认使用IPV6. 用户错误报告:http://josm.openstreetmap.de/ticket/8562,http://josm.openstreetmap.de/ticket/8627. 解决方法
所以你有两个问题:
>操作系统供应商提供具有损坏的默认IPv6配置的操作系统,和/或用户启用损坏的IPv6配置. 你可以在这里做两件事: >建议用户如何禁用不必要和破坏的IPv6过渡机制,如Teredo,ISATAP和6to4.有关这些的说明可在因特网上广泛获得. 如果某些操作系统供应商默认情况下不启用此垃圾也会很好,但这可能要求太多. Happy Eyeballs指定一种算法,即应用程序尝试(几乎)同时通过IPv6和IPv4进行连接,如果IPv6在短时间内无法工作,则回退到IPv4连接.该试验的结果也缓存了几分钟. 不幸的是,我对Java不够熟悉,不能给你特定的代码来绕过Oracle默认隐藏的所有有趣的东西,但它应该是可行的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |