【发布时间】:2020-10-17 10:57:28
【问题描述】:
我正在尝试在 Android 上打开 NIO 服务器套接字通道,如下所示(最低 API 21)。
ServerSocketChannel.open().also {
it.bind(InetSocketAddress(0))
}
但是上面的代码给了我一个错误,说 - 调用需要 API 级别 24。理论上,我可以使用ServerSocket 并收工,但我的客户端代码使用SocketChannel、ByteBuffer 等,将两者混合使用感觉很糟糕!
让我感到困惑的另一件事是,我可以在最低 API 级别 21 上 open() 它,但在 API 级别 21 上却不能 bind() 它,那么它有什么用途?
【问题讨论】:
-
您可以使用
ServerSocketChannel.socket()获取底层ServerSocket并调用bind()。ServerSocketChannel.bind()是在 Java 1.7 中添加的。不要问我这与 API 级别 24 有何关系。 -
@MarquisofLorne 感谢您的建议!我最终只这样做了。