2

Boost C++ を使用して P2P アプリケーションを実装しました。ご存じのとおり、UDP はパケットの順序やパケットの配信さえも保証しないため、次のように考えました。

1 つの要求に対して受信したすべての UDP パケットをリンク リストに入れ、正しい順序で並べて、シーケンスと欠落したパケットを確実な方法で識別できるようにします。リンクリストは struct を使用して作成されます。

-または-

それをベクトルに入れて、ベクトル内のパケットを別のスレッドに配置することを考えました。

どれが最良の方法ですか?または、ウィンドウのスライド以外に別の最良の方法がありますか。

4

2 に答える 2

6

独自のコンテナを実装したり並べ替えたりする代わりに、標準ライブラリにすでにあるものを使用してみませんか?

たとえばstd::map、シーケンス番号をキーとして使用できます。キーで自動的にソートされます。

std::priority_queueまたは、シーケンス番号をチェックする独自の比較関数で使用することもできます。

UPnPNATトラバーサルも調べる必要があります。

于 2012-08-08T06:31:04.477 に答える