我一直在编写服务器-客户端应用程序。服务器是用 c# 编写的,客户端代码是用 java 编写的。通信协议(protocol)是 TCP。
使用 tcp 传输文件时,可能会发送丢失的数据。换句话说,tcp 是否保证数据正确到达。(我是否应该发送此文件的 header 信息以检查错误,如文件大小、哈希等)
最佳答案
可靠的tcp传输os的包排序。
例如,您的 tcp 消息分为三个包 A、B 和 C。
您的客户端收到 A,包 B 丢失,然后客户端收到 C。在流中,您将仅获得包 A,包 C 被存储,一旦包 B 被您的客户端重新传输和接收,在流中您将获得包 B,然后是 C。
如果包 B 通过另一种方式路由并因此在包 C 之后收到,则执行相同的操作。
此机制需要 tcp header 中的“序列号”字段。
关于c# - TCP 连接的可靠性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20116351/