可靠的UDP算法
Reliable UDP Algorithm?
我正在研究可靠的UDP网络,我必须知道一些事情。我认为UDP可靠算法是这样工作的(我想是IDK);
- 服务器发送:(标头:6)abcdef
- 客户端接收:(头:6)abdf,发回"我有4个数据,它们是abdf"
- 服务器发送:(标头:2)ce
- 客户接收:(标题:2)ce,好吧,我要把它们组合起来
现在,这是可靠UDP的真正方法吗?
编辑(回答后,也许这对某人有帮助):我将使用TCP,因为可靠的UDP不是处理我的操作的好方法。我会发送类似于不重要的时间变量的位置。也许如果我为可靠的UDP创建一个算法,这个可靠的过程将需要3-4个UDP发送recv,这意味着我可以在这个时候发送3-4个其他不可靠的位置数据,我发送的是小数据,这可能比可靠的UDP更高效。
获得可靠UDP的"真正方法"是使用TCP。
如果您仍然想通过UDP进行验证,可以通过在消息中发送校验和来验证消息的完整性,然后在另一端重新计算校验和,以查看它是否与您发送的校验和匹配。
如果不匹配,请再次请求数据包。请注意,这本质上是对TCP的重新发明。
好吧,即使有:
- Client receive: (header:6)abdf, sends back "I got 4 data, they are abdf"
- Server send: (header:2)ce
若服务器不会收到您的响应(UDP中可能发生这种情况),该怎么办?所以,如果您不关心连接速度,切换到TCP是一个更好的选择。
您的问题听起来像是为数据分发服务量身定制的。
我会发送位置像不重要的,时间变量
事实上,位置坐标是许多供应商常用的例子。RTI有一个与您的用例非常吻合的演示。
是的,很多人听到"IDL"时都会呻吟,但我建议你公平地对待它。DDS与许多流行的pub-sub/distribution/etc协议不同,它不是一个简单的封装/管道。
我认为真正酷的是,经常会有很多逻辑和设计元素涉及"我如何对底层网络或我的对等方行为不端做出反应?"DDS提供了一种服务质量协商,并在不满足QoS条款时让代码做出反应。
我建议不要轻率地做出这个决定,它比TCP、UDP、AMQP等复杂得多。但如果你能负担得起复杂性,并能在足够大的系统上摊销,它就能带来真正的回报。
最后,DDS确实通过UDP提供了"可靠"的消息。它被设计为支持许多不同的传输和许多不同维度的QoS。当你看到这个服务所考虑的QoS的所有不同维度时,你真的会感到眼花缭乱。
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 从udp接收帧对于人脸识别来说太慢
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- C++A*算法并不总是在路径中具有目标节点
- 排序算法c++
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 算法问题:查找从堆栈中弹出的所有序列
- 下面是排序算法O(n)吗
- KMP算法和LPS表构造的运行时间
- 为什么我的排序算法会更改数组值
- 求最大元素位置的分治算法
- 具有非整数边容量的最大流量的Dinic算法
- 到连接组件算法的问题(递归)
- STL算法函数在多个一维容器上的使用
- 读取最后一行代码算法 - c++ 时出现问题
- 括号更改 O(n) 算法
- 可靠的UDP算法