尽管TCP是一种可靠的协议,它提供了重传和确认机制,但我相信它不是100%可靠的,因为send()的成功返回并不能确保数据已到达目标端点,并且仅意味着数据被复制到内核缓冲区。TCP 100%可靠吗?
应用程序是否有任何机制知道数据是否已成功到达目的地?
一个可能的解决方案可能是在应用程序层建立一些确认机制?
尽管TCP是一种可靠的协议,它提供了重传和确认机制,但我相信它不是100%可靠的,因为send()的成功返回并不能确保数据已到达目标端点,并且仅意味着数据被复制到内核缓冲区。TCP 100%可靠吗?
应用程序是否有任何机制知道数据是否已成功到达目的地?
一个可能的解决方案可能是在应用程序层建立一些确认机制?
您可以构建自己的应用程序,由接收方向发件人回复成功消息,如果没有收到成功消息,则根据需要重新发送。
在Java中,JMS做这个工作,我认为应该有一些现有的库做相同的C.
事实上,如果您不能相信您的平台的TCP实现,那么在您的应用程序层建立一个确认机制。 –
然后,确认机制100%可靠吗? –
不可能使任何协议100%可靠。见[两个将军问题](http://en.wikipedia.org/wiki/Two_Generals'_Problem) – Barmar