【发布时间】:2016-12-04 20:53:30
【问题描述】:
我在各种平台上工作了一段时间的代码突然开始失败,代码中发生了变化,但与这个地方相关的区域没有变化。
抛出异常的代码行是:
(SocketChannel) selectionKey.channel()).finishConnect()
它会抛出:
java.net.SocketException:权限被拒绝:没有更多信息
可能是什么问题?
一些可能显示更多信息的日志行,它是一个测试代码:
2016-12-04 22:50:10,585 [main] 调试套接字 - 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 - 已选择密钥
对于通道(java.nio.channels.SocketChannel[connection-pending 远程=0.0.0.0/0.0.0.0:8080])
【问题讨论】:
-
你在这个频道上打过
connect()吗?你之前有没有打电话给finishConnect()?如果是,它是否返回 true? -
是的,我调用了 connect(),它成功了。 finishConnect() 从一开始就抛出这个异常。
-
为什么要连接到 0.0.0.0?
-
后来我把它改成了本地主机,它没有改变任何东西
-
请在您的问题中发布连接到 127.0.0.1 的代码以及相应的错误和日志条目。与 0.0.0.0 相关的一切都是无效和不相关的,应该删除。
标签: java network-programming nio