socket listen() backlog パラメータの値を決定する方法は?

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


短いキューを使用する特別な理由がない限り、SOMAXCONN を使用します。

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

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

  • ほとんどの場合、半分開いている接続キューのサイズを意味しますが、完了した接続キューのサイズを意味する場合もあります。
  • 多くの実装では、backlog 引数を乗算して異なるキューの長さを生成します。
  • 大きすぎる値が指定された場合、すべての実装はとにかく値を最大キュー長に切り捨てます。