c++ - UDP数据包排列

标签 c++ udp boost-asio p2p packet

我已经使用 Boost C++ 实现了一个 P2P 应用程序。如您所知,UDP 不保证数据包顺序甚至数据包传递,所以这就是我的想法:

将一个请求的所有接收到的 UDP 数据包放在一个链接列表中,并正确排序,以便以可靠的方式识别序列和丢失的数据包。链接列表是使用结构制作的。

-或者-

我想把它放在一个 vector 中,然后在一个单独的线程中安排 vector 中的数据包。

哪种方法最好?或者除了窗口滑动之外,您还有其他最好的方法吗?

最佳答案

与其实现自己的容器或排序,不如使用标准库中已有的东西?

例如,您可以使用 std::map以序列号为键。它会自动按键排序。

或者您可以使用 std::priority_queue使用您自己的比较函数来检查序列号。

您还应该查看 UPnP NAT traversal .

关于c++ - UDP数据包排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11858092/

相关文章:

c++ - 使用启用了防火墙的 websocketpp 接受连接的问题

c++ - NetBeans 8.0.2 中打开的文件保存在项目文件中,因此在 GIT 中变脏

c - UDP 发送文件的确切字节数

c++ - Boost、异常、线程和异步,我该如何处理?

c++ - 具有 unique_ptr 捕获的 asio lambda

c++ - 为什么我的模板特化不起作用?

c++ - 数组作为 ValueSet 中的值

c - 错误的文件描述符 - 简单 UDP 客户端

udp - 包含 header 的 IP 数据包帧有多大?

c++ - 读取 : End of file in ASIO. 为什么套接字会关闭?