【发布时间】:2018-10-31 00:23:23
【问题描述】:
我们在客户端使用 java NIO 与服务器通信。 TCP重传时会发生什么:
我们会在收到 ACK 之前挂起写操作,还是会立即返回?
(我知道 IO 是异步的,我们正在异步获取响应,但是 ACK 呢)
【问题讨论】:
-
这是一个不同的层,一个不知道另一个。 TCP 实现会处理这个问题,这不会影响你,你可以完全忽略这个问题
我们在客户端使用 java NIO 与服务器通信。 TCP重传时会发生什么:
我们会在收到 ACK 之前挂起写操作,还是会立即返回?
(我知道 IO 是异步的,我们正在异步获取响应,但是 ACK 呢)
【问题讨论】:
它不等待 ACK。
从 API 的角度来看,当数据已完全传输到发送方的套接字发送缓冲区时,TCP 写入就完成了。之后发生的事情与发送应用程序完全异步且无法被发送应用程序检测到,除了通过 close() 在阻塞模式下具有正的 LINGER 超时。
【讨论】: