TCP 100%可靠吗?

虽然TCP是一个可靠的协议,提供了重传和确认机制,但是我相信它并不是100%可靠的,因为send()的成功返回并不能保证数据已经到达目标端点,而只意味着数据被复制到内核缓冲区。

应用程序是否有任何机制来知道数据是否已成功到达目的地?

一个可能的解决scheme可能是在应用程序层build立一些确认机制?

Windows命名pipe道问题

在C中的ncurses应用程序 – 读取标准input

Winsock端口监听器

无法理解下面的macros

Windows I / O驱动程序中的主动等待

会杀死进程/线程释放互斥?

NetworkComms.net很慢从USB发送到iPad的速度很慢

当DialogResult为否时阻止窗体closures

如何使用预处理器在Linux上识别64位版本?

Windows关机时如何执行function?

就发送消息而言,TCP是可靠的

被接收(相同的顺序,相同的内容); 假设内置校验和不会发生故障,这可能是因为它只有16位OR

根本不被接收

使用TCP,收到的消息不应该乱序或缺少中间消息。

要区分案例1和2,您应该实施确认机制。 一个好的想法也可以确保好于CRC的消息的完整性,就是发回一个MD5或其他散列的传入消息。

您可以构建自己的应用程序,由接收方向发送方回复成功消息,如果没有收到成功消息,则根据需要重新发送。

在Java中,JMS做这个工作,我相信应该有一些现有的库在C中做同样的事情。

当然TCP是可靠的协议,如果你想知道通过网络端口发送和接收的数据,使用wireshark软件来捕获传输和接收的数据。 通过wireshark你可以跟踪数据包。

相关文章

Git安装和使用 Git安装和使用 刚开始用git的小白适用,,转自...
fatal: remote origin already exists.解决方法 第一个问题g...
git常用命令(二)查看历史记录 git log [--pretty=oneline]...
git之如何把本地文件上传到远程仓库的指定位置 git专栏收录该...
代码规范之 lint-staged 在代码提交之前,进行代码规则检查能...
方法:1、文件没有git操作时用“git checkout--文件”命令还...