映画のエンドロール観る派?観ない派?

JAVAのソケット通信の接続数について

ServerSocket server= new ServerSocket( port );
server.setSoTimeout( 4000 );
Socket socket = server.accept();//クライアントからの接続をまつ

以上のコードを使っていますが、クライアントからの接続数を調べる方法はないでしょうか?

A 回答 (1件)

 ServerSocketには分からんと思われます。

acceptした受け口への接続が確立したらSocket socketの方にいくので。acceptから取得されたSocket数-acceptから取得された後でクローズされたSocket数を自分でカウントするしかあるまいて。

 さて、このようなサーバサイドソケットプログラムは普通はacceptから制御が返るたびにスレッドを新たに作るかselectするようにすると思うが、select法なんて普通使わない(あんもち調べ)のでマルチスレッドの時に別スレッドでクローズされたのをどう知るかという事になるかと思う。
 やり方はいくつかあるが、一番手っ取り早いのはArrayList<Socket>にacceptしたSocketを全部突っ込んで一つ一つ状態を見ながらカウントするかクローズしたらリストから削除というのが楽で得かな。もちろんスレッドセーフな作りにする必要はある。

 ところで、前述の通りacceptした受け口への接続が確立しない限りacceptは制御を返さないので、バックログの数はどうしても分からないと思われる。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報