私は経験豊富なネットワーク プログラマーであり、アドバイスが必要な状況に直面しています。
いくつかのデータをいくつかの発信インターフェイスに配布する必要があります (それぞれが各インターフェイスに対応する異なる TCP ソケット接続を介して)。ただし、重要な部分は、より良い帯域幅、つまりより高速に送信できるインターフェイスで、より多く/ほとんどのデータを送信できる必要があるということです。
私が持っていた意見は、この目的のために選択 API (UNIX と Windows の両方) を使用することでした。過去にselect、poll、さらにはepollを使用したことがあります。ただし、データが利用可能な場合は常に、複数のソケットから読み取るためのものでした。
ここでは、いくつかのインターフェイスに連続したパケットを順番に書き込み、それぞれの書き込み記述子を監視し (パラメーターを選択)、利用可能な方 (最初にパケットを送信できたことを意味します) を介して、より多くのパケットを送信し続けます。その記述子。
ここで私の意図を達成することはできますか?つまり、10Mbps リンクのインターフェイスと 1Mbps の別のインターフェイスがある場合、より高速なインターフェイスを介してほとんどのパケットを取得できることを願っています。
更新 1:この場合、選択の動作はどうなるのだろうと思っていました。つまり、読み取り記述子で選択を呼び出すと、データが利用可能な記述子が返されます。ただし、私のシナリオでは、ディスクリプタに書き込んでいて、select が最初に書き込みを終えたものを返すのを待っているとき、select は、パケット全体が書き込まれた場合にのみ戻ることを保証します。つまり、一度に 1200 バイトを書き込もうとしたとします。1200全体が返された場合にのみ返されますか、それとも永続的なエラーがありますか? select がどのように動作するかはわかりませんが、それを説明するドキュメントが見つかりませんでした。