现在在各种平台上工作了一段时间的代码开始突然失败,代码中发生了变化,但与这个地方相关的区域没有变化。
抛出异常的代码行是:
(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])
答案 0 :(得分:1)
问题是您正在尝试连接到0.0.0.0,这不是有效的TCP目标地址。由于 man connect 中描述的原因,这会导致EPERM。
使用127.0.0.1或正确的IP地址。