web-dev-qa-db-ja.com

ソケットのlisten()バックログパラメータの値を確認する方法

リスニングソケットのバックログパラメータに何を使用するかをどのように決定すればよいですか?単純に非常に大きな数を指定することは問題ですか?

37
Brian R. Bondy

docs から:

SOMAXCONNのバックログの値は、ソケットsを担当するサービスプロバイダーに、保留中の接続のキューの長さを妥当な最大値に設定するように指示する特別な定数です。

1
Ben Hoffstein

Winsock Programmer's FAQ には、これに対する非常に長い回答があります。標準設定、およびNT 4.0のホットフィックスに追加された動的バックログ機能について詳しく説明します。

32
Mike Dimmick

ショートキューを使用する特別な理由がない限り、SOMAXCONNを2番目に使用します。

キューに新しい接続用のスペースがない場合、RSTは送信されないため、クライアントはSYNを再送信することで自動的に接続の試行を継続できることに注意してください。

また、バックログ引数は、ソケットの実装によって異なる意味を持つ場合があります。

  • ほとんどの場合、ハーフオープン接続キューのサイズを意味し、一部では、完了した接続キューのサイズを意味します。
  • 多くの実装では、バックログ引数が乗算されて、異なるキューの長さが生成されます。
  • 指定された値が大きすぎる場合、すべての実装は、とにかく値を最大のキューの長さに暗黙的に切り捨てます。
4
smo