由于 windows 的 iocp 和 linux 的 epool 的不同,在开发时我们需要注意一下内容:
1.在 windows 下使用AsynchronousSocketChannel.write 方法无论是采用异步,还是 future 方式,他的数据都仅仅是写入到了缓冲区,并未发送给对方,而在 macos 和 多数linux发行版下,都已经送给了对方.
这就导致在使用异步框架开发时 onSent 事件的出发,在 windows 下只是数据送入缓冲区需要注意.
2.在 windows 中使用AsynchronousSocketChannel.read 方法无论是采用异步,还是 future 方式, 在对端异常关闭的时候,都不会得到 - 1.导致入法判断对方是否关闭了连接.