0

当我使用send()并调用阻塞系统调用发送数据时flush(),刷新是否返回:

  • 收到相应的 TCP-ACK 后?

    或者

  • 数据通过网络发送后?

4

1 回答 1

0

正如@caf 评论的那样,Linux 中没有flush系统调用。此外,Linux 中没有等待接收 TCP ACK 的机制。当您将send数据传输到网络时,它已进入内核的网络缓冲区,没有更多的保证可用。当内核接收并确认数据已进入远程主机上的接收窗口时,不再有可用的保证(严重的是,它可能尚未到达远程主机上的应用程序)。

如果您希望确保通过 TCP 发送的数据的传递,那么您应该让接收方通过发送回复来确认应用层的数据。

于 2012-09-21T10:29:31.027 回答