« 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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/43911211

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

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