私はman 2 listenを読んでいます。どのようなバックログの価値が必要ですか?
私はバックログ値が何であるかを理解していない、それがバックログ引数はどのように、数sockfdについての保留中の接続のキューが
右を育てることがあるに最大の長さを定義し
を語ります私は何が最高の価値を定義することができますか?
おかげ
私はman 2 listenを読んでいます。どのようなバックログの価値が必要ですか?
私はバックログ値が何であるかを理解していない、それがバックログ引数はどのように、数sockfdについての保留中の接続のキューが
右を育てることがあるに最大の長さを定義し
を語ります私は何が最高の価値を定義することができますか?
おかげ
は基本的に、どのようなlisten()
バックログが影響することはあなたのアプリケーションが、すぐに彼らが来るようaccept()
ING接続でない場合、着信接続は、最大キューすることができますどのように多くのです。それは、ほとんどのアプリケーションには特に重要ではありません。ほとんどのシステムで使用されている最大値は128です。これは一般に安全です。
私のクライアントにエラーメッセージを送るために 'current_nb_client <5'ならば' accept() '(私の無限ループ内で)でテストすべきでしょうか?バックログとクライアント側でこれを処理する? – mathieug
いいえ、それは必要ではありません - あなたが到着するとすぐに接続を受け入れている限り、待機中のバックログの長さは無関係です。あなたは必要に応じて*アクティブな接続をいくつでも持つことができます。 listenバックログは、完全に確立されていない接続にのみ影響します。 – duskwuff
ああ、私はちょうど理解した!私は彼らがキューから消えないと思った。しかし、いいえ!それは保留中のキューです。それぞれをaccept()するだけで、キューから消えます。 – mathieug
これは、接続しようとするクライアント間の戦いです。受け入れ要求を待ち行列にプッシュし、受け入れスレッドはそれらを吸い取る。通常、スレッドは勝つ。私は通常32で設定しますが、通常は重要なパラメータではありません。
私のクライアントにエラーメッセージを送るために 'current_nb_client <5'ならば私の' accept() '(私の無限ループ内)でテストすべきでしょうか?バックログとクライアント側でこれを処理する? – mathieug
キューがいっぱいになると接続が拒否されますが、忘れてしまう可能性は低いです。多忙なネットワークに容易に追いつくことができるものは、たった今バースト的に多くの接続要求が来るが、全体的には今日のプロセッサー/メモリー/ OS /何が起こったかをカバーするために少しキューがなければならない。 –
私は理解しています、ありがとう! – mathieug
[ソケットリスンのバックログパラメータ、この値を決定する方法は?](http://stackoverflow.com/questions/114874/socket-listen-backlog-parameter-how-to-determine-this-value) – caf