系统调用flush()是否在收到TCP ACK之前或之后返回?

时间:2012-09-12 02:32:50

标签: tcp linux-kernel flush

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

  • 收到相应的TCP-ACK后?

  • 数据通过网络发送后

1 个答案:

答案 0 :(得分:0)

作为@caf注释,Linux中没有flush系统调用。此外,Linux中没有机制等待接收TCP ACK。当您向网络send数据进入内核的网络缓冲区时,不再提供任何保证。当内核收到并确认数据已进入远程主机上的接收窗口时,不再保证可用(严重的是它可能没有到达远程主机上的应用程序)。

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