socketChannel 抛出权限被拒绝的 IOException
socketChannel throws IOException with Permission Denied
我在各种平台上工作了一段时间的代码突然开始失败,代码中发生了变化,但没有与这个地方相关的区域。
抛出异常的代码行是:
(SocketChannel) selectionKey.channel()).finishConnect()
它抛出:
java.net.SocketException: Permission denied: no further information
可能是什么问题?
一些日志行可能会显示更多信息,这是一个测试代码:
2016-12-04 22:50:10,585 [main] DEBUG Socket - Socket-Client-1-1
register to connect to address: 0.0.0.0/0.0.0.0:8080
2016-12-04 22:50:10,585 [main] DEBUG SocketSelector - Registering keys:
OP_CONNECT (for Socket-Client-1-1)
2016-12-04 22:50:10,595 [main] DEBUG SocketSelector - Registered to: OP_CONNECT > 2016-12-04 22:50:10,595 [NetworkThread] DEBUG SocketSelector -Got selected keys
for channel (java.nio.channels.SocketChannel[connection-pending
remote=0.0.0.0/0.0.0.0:8080])
问题是您正在尝试连接到 0.0.0.0,这不是有效的 TCP 目标地址。由于 man connect.
中所述的原因,这会导致 EPERM
使用 127.0.0.1 或正确的 IP 地址。
我在各种平台上工作了一段时间的代码突然开始失败,代码中发生了变化,但没有与这个地方相关的区域。
抛出异常的代码行是:
(SocketChannel) selectionKey.channel()).finishConnect()
它抛出:
java.net.SocketException: Permission denied: no further information
可能是什么问题?
一些日志行可能会显示更多信息,这是一个测试代码:
2016-12-04 22:50:10,585 [main] DEBUG Socket - Socket-Client-1-1
register to connect to address: 0.0.0.0/0.0.0.0:8080
2016-12-04 22:50:10,585 [main] DEBUG SocketSelector - Registering keys: OP_CONNECT (for Socket-Client-1-1)
2016-12-04 22:50:10,595 [main] DEBUG SocketSelector - Registered to: OP_CONNECT > 2016-12-04 22:50:10,595 [NetworkThread] DEBUG SocketSelector -Got selected keys
for channel (java.nio.channels.SocketChannel[connection-pending remote=0.0.0.0/0.0.0.0:8080])
问题是您正在尝试连接到 0.0.0.0,这不是有效的 TCP 目标地址。由于 man connect.
中所述的原因,这会导致 EPERM使用 127.0.0.1 或正确的 IP 地址。