c# - TCP 连接的可靠性如何?

标签 c# java sockets networking tcp

我一直在编写服务器-客户端应用程序。服务器是用 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/

相关文章:

c# - TDD:测试构造函数设置属性是否有意义?

java - JPanel.getBounds() 意外返回 0

Python - 由于目标机器主动拒绝而无法建立连接

swift - Swift 2 是否提供 native 套接字? (不算 cocoa 等的东西)

c# - UWP App Start 抛出异常 : 'System.Exception' in mscorlib. ni.dll

c# - 集合中的重复键处理

c# - 找不到路径的一部分 'C :\

java - Java 中的一个数组中的 Int 和 Double

java - 在 for 循环中为每次迭代声明一个新变量

sockets - 将或 "connect"QUdpSocket 绑定(bind)到远程主机和端口?