Создание нескольких сокетов с использованием одного клиента в приложении чата - PullRequest
0 голосов
/ 16 марта 2012

Я тестирую приложение чата для количества пользователей.Итак, я пытаюсь сделать следующее:

Я пытаюсь запустить приложение чата по логину для чата только для одного пользователя 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+ успешных соединений (вход в систему).?

Как мне решить эту проблему?

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

1 Ответ

0 голосов
/ 16 марта 2012

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

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

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

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

...