networking - 如何知道何时完成接收 TCP 流?

标签 networking tcp stream protocols

我不确定如何在 TCP 中告知发件人何时向我发送完信息。

比如A需要发送200个字节给B,B怎么知道A已经发送完毕,信息已经准备好传输到应用层了?

有 FIN 标志,但据我所知,它只是象征着你要关闭连接。

谢谢。

最佳答案

TCP 没有义务在发送方完成连接上的数据发送后通知接收方。它不能,因为它不了解它正在传输的更高级别的协议(protocol)数据。

但是它会告诉您连接是否关闭(然后您会在网络跟踪中看到 FIN、FIN-ACK)序列。从编程的角度来看,假设您使用的是 C,当对等方关闭连接时,函数 recv 将返回 0。

关于networking - 如何知道何时完成接收 TCP 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7522965/

相关文章:

node.js - 使用 Promise 在 Node.js 中将多个 svg 字符串流式传输到 png

linux - 如何通过 sll_ifindex 判断一个接口(interface)是否为环回设备?

Linux公共(public)主机名管理

javascript - 为什么我可以插入可读流?

TCP 监听服务器在 9870 端口。是否可以配置客户端端口?

c++ - 正在更改的 SFML TCP 数据包

dart - 如何将最新的流图组合成值图?

java - VoltDB createConnection 超时

c - 查找所有带有 miniupnp 的 UPnP 网关

android - 屏幕旋转后更改背景颜色无效