4

呼び出すことで、ソケットの受信バッファーにあるデータの量を知ることができますSocket.IOControl(IOControlCode.DataToRead, null, outValue);

ソケットの送信バッファにあるデータの量を知るのに相当するものはありますか?

帯域幅と遅延に制約のあるネットワークでできるだけ多くの UDP パケットを送信する必要があり、送信バッファーがオーバーフローする状況に陥っているため、なんらかのスロットリングを実装する必要があります。

4

2 に答える 2

3

UDP ソケットには送信バッファがありません。UDPのソケット オプションの意味は、SO_SNDBUF送信できるデータグラムのサイズの制限です。通常、カーネルには NIC ごとにパケット キューがありますが、これはすべてのプロトコルに対して組み合わされており、そのサイズを照会するためのユーザーランド API はありません。IP 層、そしてハードウェアは、パケットをサイレントにドロップできます。TCP はそれを処理する方法を知っていますが、UDP は知りません。したがって、.Net やその他の Microsoft の奇跡がユーザーランド ライブラリにそのようなバッファリングを持たない限り、あなたは運が悪いでしょう。

頼りになるのは、受信者がパケットのドロップ、再送信の要求、TCP へのフォールバックなどについて送信者に通知することです。これは、送信者から何らかの順序付けを行うことも意味します。

お役に立てれば。

于 2011-08-02T16:01:53.743 に答える
0

ヘッダーを分析できますか?コンテンツの長さに関する情報があるかもしれません。

于 2011-08-02T15:26:48.307 に答える