« UnfuddleのインフラがAmazonEC2ベースに | Main | 再帰的にプロパティセット(Windows) »

2009.02.02

ServerSocketのbacklog

ServerSocket serversocket = new ServerSocket(8888, 1);

ServerSocketを初期化する際に、backlogのパラメータを指定すると、キューのサイズを指定することができるとのこと。JavaDocによると、

キューが埋まっているときに接続要求があると、接続は拒否されます。

と記載されています。

 試しに、ServerSocketでリクエストの受信~返却に時間がかかるような処理を記述(といっても、Thread.sleep(5000) で強制的にウェイトをかけているだけですが)して、クライアントから複数リクエストをスレッドで投げた場合・・・3つ目のリクエスト以降、

java.net.ConnectException: Connection refused: connect

の例外が発生。1つ目の処理を実行中、2つ目のリクエストがキューに入り、その時点でキューが埋まったので3つ目以降のリクエストに対して「接続を拒否」したってことですね。

#ちなみに、0 を指定した場合は、初期値(50)が設定されるようですので、キューの数は最低1以上ってことになります。

|

« UnfuddleのインフラがAmazonEC2ベースに | Main | 再帰的にプロパティセット(Windows) »

Java」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference ServerSocketのbacklog:

« UnfuddleのインフラがAmazonEC2ベースに | Main | 再帰的にプロパティセット(Windows) »