任何人都遇到NIO / IPV6的问题并与网络断开连接?

时间:2019-04-09 15:08:14

标签: java nio

我有一个在这种情况下可以工作的测试用例

  1. ipv4,在线,nio(-Djava.net.preferIPv4Stack = true)
  2. ipv4,离线(断开wifi),nio(-Djava.net.preferIPv4Stack = true)
  3. ipv6,在线,尼奥

那时,最终的ipv6处于离线状态(未连接wifi),从不连接,而挂起直到超时。第一次调用,使SocketChannel.connect返回false,这很好,然后它通过SelectableChannel.register启动异步连接。不幸的是,它挂在jdk代码中的某个地方.....嗯,我想我接下来可以进行堆栈转储并添加更多信息。

以前有没有人看过这个问题? jdk 9.0.4

(我想我也必须拔掉插头并升级到jdk10,希望这很容易-手指交叉)。

更新1:Ok Profiler毫无帮助,因为它是nio,它是异步的,意味着它位于选择器上等待(预期并预期将全部触发),另一个线程位于将来等待其解析,直到选择器触发并完成永远不会发生的连接(仅脱机)。我想我也会升级jdk并对其进行测试。

更新2:升级到jdk12,结果相同。

是否有人在localhost上进行过测试,服务器绑定到端口0,客户端连接到端口,客户端最终在nio中使用ipv6绑定到端口?当测试套件不能离线工作而只能在线工作时,这非常烦人。因此,我正在尝试解决此问题。

谢谢, 院长

0 个答案:

没有答案