【问题标题】:Java socket communication using NIO使用 NIO 的 Java 套接字通信
【发布时间】:2011-03-18 10:38:17
【问题描述】:

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

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

根据this article,看来我必须采用SocketChannels 而不是输入流和输出流。输入流和输出流是否解耦,所以我可以先用SocketChannel 尝试输入流,然后保持输出流代码不变?

【问题讨论】:

    标签: java sockets nio


    【解决方案1】:

    SocketChannel 的使用模型与 Socket 完全不同。 但是你当然可以打开 SocketChannel 并使用 write(...) 方法发送数据。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 2021-06-20
      • 2020-10-23
      • 2018-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多