accept関数

accept関数は確立済みコネクションキューの先頭から、接続が完了している次のコネクションを取り出す。確立済みコネクションキューが空の場合、プロセスはスリープ状態におかれる。
ようするに、acceptの前にselectが存在する場合、acceptに来た時点で確立済みコネクションキューには接続が完了したコネクションがあるので、スリープ状態にならないですぐに接続済みソケットを取り出せる。
一方select文がない、シングルクライアントの場合は、acceptを実行した時点では、確立済みコネクションキューの中身は空っぽなので、スリープ状態となり、クライアントからの接続を待つようになる。
acceptを実行したら、必ずしもスリープ状態になるわけではないという事に注意。
重要なのは確立済みコネクションキューがどうなっているかということだな。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です