假设我有一个UDP套接字并向服务器发送一个消息。现在如何判断服务器是否收到了msg?
来自服务器的编码确认是一个简单的选项,有没有其他方法可以找到?我猜不是..
答案 0 :(得分:2)
即使没有TCP,您仍然无法确定是否有消息到达。这是通信网络的一般限制(例如,也适用于蜗牛邮件)。如果您想了解更多信息,可以从Bizantine Generals Problem开始。
您可以做的事情是增加检测邮件丢失的可能性。通常这样做是向发送者发送确认。但这也可能会丢失,因此对于100%的可靠性,您需要发送确认确认。然后确认确认确认。等等。
我的建议:如果可靠性是您主要关注的问题,请使用TCP。它已经存在了一段时间,并且可能不会有自定义解决方案存在的一些缺陷。如果您不需要TCP的可靠性,但需要低延迟或UDP擅长的其他东西,请使用UDP。在这种情况下,如果某些数据包丢失,请确保不会出现问题。