我正在致力于建立可靠的UDP网络,我必须知道一些事情。我认为UDP可靠算法是这样工作的(我猜是IDK);
现在,这是可靠的UDP的真正方法吗?
someone)编辑(答案之后,也许这对我要使用很有帮助,因为可靠的UDP并不是处理操作的好方法。我会像不重要的时间变量一样发送位置。也许如果我为可靠的UDP创建一个算法,这个可靠的过程将需要3-4 UDP发送-recv,这意味着我可以在此时发送3-4其他不可靠的位置数据,并且我发送的数据很小,这比可靠的UDP更有效。
发布于 2013-07-29 20:41:12
要获得可靠的UDP,“真正的方法”是使用TCP。
如果您仍然希望在UDP上执行,可以通过发送带有消息的校验和来验证消息的完整性,然后在另一端重新计算校验和,以查看它是否与您发送的校验和匹配。
如果不匹配,请再次请求该数据包。请注意,这实际上是对TCP的重新发明。
发布于 2013-08-04 20:04:39
好吧,即使:
- Client receive: (header:6)abdf, sends back "I got 4 data, they are abdf"
- Server send: (header:2)ce如果服务器不会接收您的响应(这可能发生在UDP中)怎么办?因此,如果您不关心连接的速度,那么切换到TCP是更好的选择。
发布于 2013-07-30 02:12:22
你的问题听起来像是为数据分发处量身定做的。
我会像不重要的时间变量一样发送位置
事实上,位置坐标是其许多供应商的流行示例。RTI有一个非常适合您的用例的演示。。
是的,很多人听到"IDL“时都在呻吟,但我建议你公平地对待它。DDS不同于许多流行的发布/分发/etc协议,因为它不是简单的封装/管道。
我认为真正酷的是,很多逻辑和设计元素都会陷入“我如何反应底层网络或我的同龄人行为不当的问题?”DDS提供了一个优质的服务协商和挂钩,让您的代码反应时,QoS条款是不符合的。
我建议不要轻率地做这个决定,它比TCP、UDP、AMQP等复杂得多。但是如果你能够负担得起复杂性,并且能够在一个足够大的系统上摊销它--它可以支付真正的红利。
最后,DDS确实在UDP上传递了“可靠”的消息。它被设计为支持许多不同的传输,以及许多不同的QoS维度。当您看到这个服务所考虑的QoS的所有不同维度时,真是令人眼花缭乱。
https://stackoverflow.com/questions/17933737
复制相似问题