我正在尝试在Android上打开NIO服务器套接字通道,如下所示(最小API 21)。
ServerSocketChannel.open().also {
it.bind(InetSocketAddress(0))
}
但是上面的代码给了我一个错误,说 -调用需要 API 级别 24。理论上,我可以使用ServerSocket
并调用它一天,但我的客户端代码正在使用SocketChannel
,ByteBuffer
等,并且将两者混合在一起感觉像是一个糟糕的设计!
另一件让我感到困惑的事情是,我可以在最低 API 级别 21open()
它,但不能在 API 级别 21bind()
它,那么它有什么用途呢?
现在,我找到了另一种方法来绑定服务器套接字并仍然使用ServerSocketChannel
,而无需将 API 级别更改为 24。
ServerSocketChannel.open().also {
it.socket().bind(InetSocketAddress(0))
}
我仍然对在 API 级别 24 添加ServerSocketChannel#bind
的决定感到困惑。