java nio 的几个点

发布于 2022-09-06 12:12:17 字数 208 浏览 21 评论 0

1、假如同步socketChannel.write(byte[])这个方法调用成功了,是表示对端一定能收到数据吗?还是说只是写到了本地的TCP 那个缓冲区里面?
2、还有一种是socketChannel是异步的情况下,如果我对端宕机了,我这端的select可以感知到read事件和write事件吗?如果能的话,是哪个事件呢?原理是什么呢?
这几个问题困扰我好久了,还望大牛给小弟指点迷津~~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葵雨 2022-09-13 12:12:17
  1. 如果是阻塞式的,那只能代表数据已发出去,但不能保证对方已收到;如果是非阻塞式的,select到OP_WRITE就说明数据已发出去;无论哪种方式似乎都无法确保对方收到,除非对方用数据来应答;
  2. 对方宕机(或者拔网线),理论上我方是无法知道状态的,如果对方进程被kill掉,那么操作系统可能会给回一个FINRST,你应该会select到一个OP_READ,并在read时得到-1或异常。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文