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