在SocketChannel / ServerSocketChannel中使用底层的Socket / ServerSocket?

时间:2011-09-23 07:51:49

标签: java selector nio

我正在尝试使用Java.nio-package进行非阻塞通信。所以我在Selector中得到了我的ServerSocketChannel和所有连接的客户端(SocketChannel),并使用Selector.select()等待数据(OP_ACCEPT / OP_READ)。

我的问题是:我可以 - 而不是使用ByteBuffer并直接使用SocketChannel.read()读取 - 使用底层Socket,获取InputStream并使用该流读取?或者这会搞砸选择器的东西?

1 个答案:

答案 0 :(得分:0)

你不能。

http://download.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html#getInputStream%28%29

如果此套接字具有关联的通道,则生成的输入流将其所有操作委派给通道。如果通道处于非阻塞模式,则输入流的读取操作将抛出IllegalBlockingModeException。