socketChannel抛出具有Permission Denied的IOException

时间:2016-12-04 20:53:30

标签: java network-programming nio

现在在各种平台上工作了一段时间的代码开始突然失败,代码中发生了变化,但与这个地方相关的区域没有变化。

抛出异常的代码行是:

(SocketChannel) selectionKey.channel()).finishConnect()

它抛出:

  

java.net.SocketException:权限被拒绝:没有进一步的信息

可能是什么问题?

某些可能显示更多信息的日志行,它是一个测试代码:

  

2016-12-04 22:50:10,585 [main] DEBUG Socket - Socket-Client-1-1
  注册以连接到地址:0.0.0.0/0.0.0.0:8080
  2016-12-04 22:50:10,585 [main] DEBUG SocketSelector - 注册密钥:   OP_CONNECT(用于Socket-Client-1-1)
  2016-12-04 22:50:10,595 [main] DEBUG SocketSelector - 注册:OP_CONNECT> 2016-12-04 22:50:10,595 [NetworkThread] DEBUG SocketSelector -Got选择键
  for channel(java.nio.channels.SocketChannel [connection-pending   远程= 0.0.0.0 / 0.0.0.0:8080])

1 个答案:

答案 0 :(得分:1)

问题是您正在尝试连接到0.0.0.0,这不是有效的TCP目标地址。由于 man connect 中描述的原因,这会导致EPERM。

使用127.0.0.1或正确的IP地址。