我正在尝试编写一个非阻塞客户端/服务器,我已经注意到Socket提供了getInputStream()
和getOutputStream()
,但SocketChannel提供了read()
和{ {1}}。
我想访问write()
的数据包,我可以在阻止模式下使用以下内容:
ByteArrayDataInput
但如果我尝试在非阻塞模式下这样做,我会收到以下错误:
ByteStreams.newDataInput(socket.getInputStream().read());
根据我的理解,我必须通过仅提供java.nio.channels.IllegalBlockingModeException
和read()
的频道来阅读数据包。
以与write()
类似的方式获取此数据的首选方法是什么?我可以读取原始类型或UTF8字符串?
我的NIO线程如下:
ByteArrayDataInput