虽然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你可以跟踪数据包。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。