开发者社区> 问答> 正文

java nio在什么时候会触发write事件了,想了很久都想不明白的事情:报错

比如我写了个服务端程序,流程为:接受客户端连接,读取客户端发过来的数据,处理数据,处理完成后再写入数据。

我在读取事件里面读取了数据处理完后,怎么去触发写事件,难道是直接在读取事件里面就直接把数据写出去?那这样的话,要读事件有什么用?

展开
收起
kun坤 2020-06-07 20:50:17 1192 0
1 条回答
写回答
取消 提交回答
  • 读事件触发以后,你接受到服务器的信息,进行一些业务逻辑处理,处理完成之后假如你要向服务器返回信息时把事件改为写:channel.register(selector, SelectionKey.OP_WRITE),一般处理完逻辑之后改为register(selector, SelectionKey.OP_WRITE | SelectionKey.OP_READ) ,这样在等待消息的那段时间即可进行读操作又可进行写操作!######

    引用来自“qyj”的答案

    读事件触发以后,你接受到服务器的信息,进行一些业务逻辑处理,处理完成之后假如你要向服务器返回信息时把事件改为写:channel.register(selector, SelectionKey.OP_WRITE),一般处理完逻辑之后改为register(selector, SelectionKey.OP_WRITE | SelectionKey.OP_READ) ,这样在等待消息的那段时间即可进行读操作又可进行写操作!
    意思是我先只注册写事件register(selector, SelectionKey.OP_READ),读取到数据,处理完业务逻辑,然后再注册写事件?那这样就会触发写事件吗?
    ######我现在也正在纠结这个问题,读取客户端消息在读事件里面执行,如果需要回复客户端也只需要socketChannel.write(byteBuffer);写事件有什么特殊的用处么?######

    引用来自“时间在追我”的评论

    我现在也正在纠结这个问题,读取客户端消息在读事件里面执行,如果需要回复客户端也只需要socketChannel.write(byteBuffer);写事件有什么特殊的用处么?
    我也在纠结,写的话,我想写就可以写啊,还用得着事件吗?写事件是否是用来通知客户端,服务端已经准备好读了。写不是用在自己身上,而是用到对方身上的吧
    ######http://blog.csdn.net/zhouhl_cn/article/details/6582435
    2020-06-07 20:50:21
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载