java - SocketChannel write() read() - 非阻塞 - Java

标签 java sockets

在非阻塞模式下,你可以注册一个 channel ,所以当 channel 准备好写入时,通知选择器。

我的问题是,我的 channel 如何知道何时写入。 Java 决定 channel 现在可以写入的条件是什么?例如,服务器(假设我是客户端)是否通知我的 channel /套接字它已准备好读取?所以我的 SelectionKey.OP_WRITE 会触发选择器?

我想知道 read() 也一样。但我想它是在套接字已经收到一些数据时通知您读取已收到的数据。对吧?

谢谢

最佳答案

它实际上并没有告诉您它何时准备好进行物理写入,而是告诉您何时写入缓冲区中有可用空间或读取缓冲区不为空以供读取。

关于java - SocketChannel write() read() - 非阻塞 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968148/

相关文章:

java - 如何在 android 应用程序中导入 ZXING 库?

java - 通过捕获失败步骤的失败原因,继续在 Serenity Jbehave BDD 中执行后续步骤

java - 禁用来自 Maven 的 project-info-reports-plugin 的所有报告

Java UDP数据包仅容纳5位

java - 远程程序使用socket问题

java - 为什么我的 Java 服务器关闭套接字?

java - 使用socket java向另一个程序发送信号

java - 在 Java 1.6 中启用 TLS 1.2

java - 如何动态生成任意大小的整数的所有组合

java - 如何在p2p应用程序中随机选择谁开始游戏/聊天?