尽管TCP是一种提供重传和确认机制的可靠协议,但我认为它不是100%可靠,因为send()的成功返回并不能确保数据已到达目标端点,只表示数据是复制到内核缓冲区。
是否有任何机制让应用程序知道数据是否已成功到达目的地?
一种可能的解决方案是在应用层中建立一些确认机制?
答案 0 :(得分:3)
TCP是可靠的,因为发送的消息将
使用TCP,收到的消息永远不会乱序或丢失中间消息。
要区分案例1和案例2,您应该实施确认机制。一个好主意还可以确保比CRC更好的消息完整性,即发回MD5或传入消息的其他散列。
答案 1 :(得分:1)
您可以构建自己的应用,通过接收方向发送方回复成功消息,如果没有收到成功消息,则根据需要重新发送。
在Java中,JMS做这项工作,我相信应该有一些现有的库在C中做同样的事情。
答案 2 :(得分:-1)
当然,TCP是可靠的协议,如果您想知道通过网络端口传送和接收的数据,请使用wireshark软件来捕获发送和接收的数据。通过wireshark,您可以追踪数据包。