使用NIO的Java套接字通信

时间:2011-03-18 10:38:17

标签: java sockets nio

目前,我们的应用程序使用套接字输入和输出流进行通信。在具体示例中,它从控制台输入流中读取并写入套接字输出流。如果套接字输入从外部关闭,但写入阻塞,则无法关闭输出流导致挂起。

因此我想在循环中使用一些轮询,其中定期轮询(控制台)输入流以检测它是否已关闭并因此关闭输出流。

根据this article,看起来我必须使用SocketChannel而不是输入流和输出流。输入流和输出流是否已解耦,因此我可以首先使用SocketChannel对输入流进行尝试,并保持输出流代码不变?

1 个答案:

答案 0 :(得分:0)

SocketChannel具有完全不同的使用模型而不是套接字。 但是你当然可以打开SocketChannel并使用write(...)方法发送数据。

SocketChannel允许非阻塞网络调用(因此它具有很高的可扩展性),并且在打开连接时更便宜(更少的CPU开销)。