我一直在编写服务器客户端应用程序.Server用c#编码,客户端代码用java编写。通信协议是TCP。
使用tcp传输文件时,可以发送丢失的数据。换句话说,tcp保证数据正确到达。(我应该发送此文件的头信息以检查错误,如文件大小,哈希等。)
答案 0 :(得分:3)
TCP在协议中提供16位校验和。它可以检测大多数错误。错误很可能是在较高级别而不是tcp / ip。如果您的软件需要高可靠性,可以考虑使用端到端策略。
有一篇经典文章谈到这一点:“end to end arguments in system design”。
答案 1 :(得分:3)
tcp传输包的顺序可靠。
例如,您的tcp消息分为三个包A,B和C.
您的客户端收到A,包B丢失,然后客户端收到C.在流中,您将只获得包A,包C被存储,并且一旦包B被您的客户端重新传输和接收,您在流中将获得包B,然后是C.
如果通过另一种方式路由包B并且因此在包C之后收到包,那么也是如此。
此机制需要tcp标头中的“序列号”字段。