0

私はserversocketクラスで作業しており、新しいクライアントがserversocketにヒットしたときにスレッドを開きます:

serverSocket = new ServerSocket(port);

while (true) {
        Socket clientSocket = serverSocket.accept();
        new Thread(this).start();//opening multiple threads
}

しかし、5000 クライアントがこのサーバーソケットにヒットすると、クライアント側にエラーが表示されます。java.net.ConnectException: Connection refused: connect

サーバーソケットを開いてすべてのクライアント接続を受け入れることができるようにするためのより良い方法を教えてください。同時クライアント接続間には 1 ミリ秒のタイム ギャップがあります。

4

1 に答える 1

1

絶対にチェックしなければならないことが2つあります。

ファイル記述子の制限。Linux ベースのシステムでは、ulimit を使用して確認できます。

次に、Serversocket には待機キュー サイズがあります。キュー サイズよりも多くの接続を待機している場合、それらはすぐに拒否されます。ServerSocket(port, backlog) コンストラクターを試す必要があります。

于 2010-07-28T14:23:43.707 に答える