问题描述
我正在尝试在Android(最低API 21)上打开NIO服务器套接字通道。
ServerSocketChannel.open().also {
it.bind(InetSocketAddress(0))
}
但是上面的代码给我一个错误,说-调用需要API级别24 。从理论上讲,我可以使用ServerSocket
并称其为一天,但是我的客户代码使用的是SocketChannel
,ByteBuffer
等,并且将两者混在一起感觉就像是一个糟糕的设计!
让我感到困惑的另一件事是,我可以在最低API级别21上open()
,但不能在bind()
API级别21上{{1}},那么它的作用是什么?
解决方法
就目前而言,我找到了一种替代方法来绑定服务器套接字,并且仍然使用ServerSocketChannel
而不将API级别更改为24。
ServerSocketChannel.open().also {
it.socket().bind(InetSocketAddress(0))
}
对于在API级别24之前添加ServerSocketChannel#bind
的决定,我仍然感到困惑。