2012-03-16 3 views
0

Я тестирую приложение чата для количества пользователей. Так что я пытаюсь выглядеть следующим образом:Создание нескольких сокетов с использованием одного клиента в приложении чата

Я пытаюсь запустить мое приложение для чата, выполнив вход в чат только для одного пользователя в течение 1000 раз в цикле. вот моя часть кода.

public void LoginChatConnect() { 
    try { 

     // while(true){ 
     for(int i=0;i<1000;i++){ 
     System.out.println("inside loginChatLogin"); 
     String userId = "Rahul"; 
     String password = "rahul"; 
     sockChatListen = new Socket("localhost", 5004); 
     // /sockChatListen. 
     dosChatListen = new DataOutputStream(
       sockChatListen.getOutputStream()); 
     disChatListen = new DataInputStream(sockChatListen.getInputStream()); 
     dosChatListen.writeUTF(userId); 
     dosChatListen.writeUTF(password); 
     // System.out.println(dosChatListen.toString()); 
     dosChatListen.flush(); 


     // sockChatListen.close(); 
     boolean b = sockChatListen.isClosed(); 

     System.out.println("connection open**********************" + b); 
     sockChatListen.close(); 

     System.out.println("connection closed**********************" + b); 
     count++; 
     System.out.println("count" + count); 
     } 

    } catch (UnknownHostException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

В приведенном выше коде я просто пытаюсь войти в систему только для одного пользователя в течение 1000 раз. Но после определенного входа он дает мне эту ошибку сокета.

java.net.SocketException: Connection reset by peer: socket write error 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 

Здесь я пытаюсь создать соединение с одним портом 5004. Почему я получаю ошибку после того, как более 100 успешных соединений (логин).?

Как я могу восстановить эту проблему?

Любые предложения будут полезны.

ответ

0

То, что я понимаю из вашего сообщения, заключается в том, что вы хотите одновременно имитировать 1000 пользователей, регистрирующихся на чат-сервере. Я считаю, что вы пытаетесь проверить нагрузку на свой чат-сервер.

Однако из вашего кода я вижу, что вы устанавливаете и закрываете соединение сокета каждый раз в цикле. Это похоже на 1000 пользователей, ожидающих очереди и пытающихся войти на сервер один за другим. Это не имитирует одновременную нагрузку, а 1000 последовательных вызовов на сервер и не подходит для загрузки вашего сервера.

Мои комментарии основаны на вышеуказанном понимании. Просьба сообщить, если это не так.

Что касается исключения, которое вы получаете, я не знаю, почему он не должен работать после более чем 100 попыток. Возможно, вам нужно проверить код на стороне сервера, чтобы выяснить проблему.

+0

ОК. Так можно ли создавать 1000 последовательных соединений одним клиентом сокета? – Java

+0

Да. Каждый раз, когда вы отказываетесь от своего клиента, он создаст новый клиентский сокет, который подключен к вашему серверу. Таким образом, вы можете одновременно использовать 1000 экземпляров (или любой возможный номер) своего клиентского приложения для имитации параллельных подключений. Однако этого недостаточно, чтобы немедленно установить и закрыть соединение. Вы можете поддерживать соединение в течение некоторого времени и обменивать некоторые суровые данные с сервером для имитации одновременных пользователей. – Drona

Смежные вопросы