我已经使用 Boost C++ 实现了一个 P2P 应用程序。如您所知,UDP 不保证数据包顺序甚至数据包传递,所以这就是我的想法:
将一个请求的所有接收到的 UDP 数据包放在一个链接列表中,并正确排序,以便以可靠的方式识别序列和丢失的数据包。链接列表是使用结构制作的。
-或者-
我想把它放在一个 vector 中,然后在一个单独的线程中安排 vector 中的数据包。
哪种方法最好?或者除了窗口滑动之外,您还有其他最好的方法吗?
最佳答案
与其实现自己的容器或排序,不如使用标准库中已有的东西?
例如,您可以使用 std::map
以序列号为键。它会自动按键排序。
或者您可以使用 std::priority_queue
使用您自己的比较函数来检查序列号。
您还应该查看 UPnP NAT traversal .
关于c++ - UDP数据包排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11858092/