java - 如何刷新 Java NIO 中的 SocketChannel?

标签 java nio

在 Java IO 中,OutputStream 可以使用 flush() 方法来确保立即发送数据。

SocketChannel在Java NIO中有没有对应的函数?据我所知,FileChannel 有一个force() 方法来刷新数据。

可能是一个非常幼稚的问题......

最佳答案

OutputStream.flush() 除了刷新任何 BufferedOutputStreamObjectOutputStreamPrintStream 的缓冲区外什么都不做> 在堆栈中。

具体来说,它不会执行与 FileChannel.force()getFD().sync() 对应的任何操作。它只是将流缓冲区从 JVM 刷新到(在本例中)内核中的套接字发送缓冲区。

SocketChannel.write() 根本不涉及任何此类缓冲:它直接进入内核中的套接字发送缓冲区。所以没有什么flush,也就没有flush操作。

关于java - 如何刷新 Java NIO 中的 SocketChannel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7440514/

相关文章:

Java - 包含整数列表的 TreeSet?

Java - 操作顺序 - 在一行中使用两个赋值运算符

java - 在 Java NIO react 器模式中的单独线程中调度事件处理程序

java - 无法从 netty 服务器接收客户端响应

用于继续流式传输的 java.nio 选择器和 SocketChannel

Java 带开关

java - 我有一个java问题,用于按名称一一移动文件

java - Java中如何迭代读取目录中的所有文件?

java - 是否可以在单个端口上运行两个 NIO 服务器套接字?

java - tomcat服务器停止时UI上的异常处理