• ベストアンサー

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

JAVAのソケット通信の接続数について ServerSocket server= new ServerSocket( port ); server.setSoTimeout( 4000 ); Socket socket = server.accept();//クライアントからの接続をまつ 以上のコードを使っていますが、クライアントからの接続数を調べる方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

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

関連するQ&A