我正在尝试使用Java.nio-package进行非阻塞通信。所以我在Selector中得到了我的ServerSocketChannel和所有连接的客户端(SocketChannel),并使用Selector.select()等待数据(OP_ACCEPT / OP_READ)。
我的问题是:我可以 - 而不是使用ByteBuffer并直接使用SocketChannel.read()读取 - 使用底层Socket,获取InputStream并使用该流读取?或者这会搞砸选择器的东西?
答案 0 :(得分:0)
你不能。
http://download.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html#getInputStream%28%29
如果此套接字具有关联的通道,则生成的输入流将其所有操作委派给通道。如果通道处于非阻塞模式,则输入流的读取操作将抛出IllegalBlockingModeException。