我不确定如何在 TCP 中告知发件人何时向我发送完信息。
比如A需要发送200个字节给B,B怎么知道A已经发送完毕,信息已经准备好传输到应用层了?
有 FIN 标志,但据我所知,它只是象征着你要关闭连接。
谢谢。
最佳答案
TCP 没有义务在发送方完成连接上的数据发送后通知接收方。它不能,因为它不了解它正在传输的更高级别的协议(protocol)数据。
但是它会告诉您连接是否关闭(然后您会在网络跟踪中看到 FIN、FIN-ACK)序列。从编程的角度来看,假设您使用的是 C,当对等方关闭连接时,函数 recv 将返回 0。
关于networking - 如何知道何时完成接收 TCP 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7522965/