- java/
- Java 有人对NIO/IPV6和断开网络连接有问题吗?
Java 有人对NIO/IPV6和断开网络连接有问题吗?
Java 有人对NIO/IPV6和断开网络连接有问题吗?,java,nio,Java,Nio,我有一个在这些情况下工作的测试用例
ipv4,在线,nio(-Djava.net.preferIPv4Stack=true)
ipv4,脱机(断开wifi),nio(-Djava.net.preferIPv4Stack=true)
ipv6,在线,nio
然后,最终的ipv6离线(没有wifi连接)实际上从未连接,只是挂起直到超时。第一个调用so SocketChannel.connect返回false,这很好,因此它会使用SelectableChannel.register启动异步连接。不幸的
我有一个在这些情况下工作的测试用例
ipv4,在线,nio(-Djava.net.preferIPv4Stack=true)
ipv4,脱机(断开wifi),nio(-Djava.net.preferIPv4Stack=true)
ipv6,在线,nio
然后,最终的ipv6离线(没有wifi连接)实际上从未连接,只是挂起直到超时。第一个调用so SocketChannel.connect返回false,这很好,因此它会使用SelectableChannel.register启动异步连接。不幸的是,它挂在jdk代码中的某个地方……嗯,我想我接下来可以进行堆栈转储并添加更多信息
以前有人见过这个问题吗?
JDK9.0.4
(我想我还得拔掉插头,升级到jdk10,希望这会很容易——祝你好运)
更新1:Ok Profiler没有帮助,因为它是nio,它是异步的,这意味着它位于选择器上等待(预期和预期触发就是全部),而另一个线程位于未来等待它解决,直到选择器触发并完成从未发生的连接(仅脱机)。我想我会升级jdk并测试它
更新2:升级到jdk12,结果相同
是否有其他人在本地主机上进行过测试,其中服务器绑定到端口0,客户端连接到最终绑定到客户端位于nio且使用ipv6的端口?当一个测试套件不能离线工作并且只能在线工作时,这是非常烦人的,所以我正在尝试解决这个问题
谢谢,
Dean当wiki关闭时,您的测试是否绑定/连接到IPv6链接本地地址?这是哪个操作系统。您是否尝试指定作用域id来标识环回接口?当wiki关闭时,您的测试是否绑定/连接到IPv6链接本地地址?这是哪个操作系统。您是否尝试指定作用域id来标识环回接口?