Разработка Java-клиента - PullRequest
0 голосов
/ 29 марта 2012

В настоящее время я занимаюсь разработкой клиент-серверного приложения на Java и не могу определиться с тем, как спроектировать клиент.

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

    try{

        mIn = new DataInputStream(mSocket.getInputStream());
        mOut = new DataOutputStream(mSocket.getOutputStream());

        while(true){

            byte tPackType = mIn.readByte();

            switch(tPackType){

                case PackType.LOGIN:
                    login();
                    break;
                case PackType.REGISTER:
                    register();
                    break;
                default:

            }

        }

    }catch (IOException e){
        mLog.logp(Level.WARNING, this.getClass().getName(), "run()", "IOException in run()", e);
    }finally{
        try{
            mOut.close();
            mIn.close();
            mSocket.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }

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

Заранее спасибо, veLr.

1 Ответ

1 голос
/ 29 марта 2012

I want to be able to receive updates from the server

Я думаю, что у вас есть два варианта сделать это.

  • Вариант 1 - заставить вашего клиента опрашивать сервер на наличие обновлений. Я бы не рекомендовал это, поскольку это в конечном итоге увеличит вашу нагрузку на ваш сервер. Скорее всего, у вас возникнет проблема с производительностью в тот момент, когда вы попытаетесь увеличить масштаб вашей системы.

  • Вариант 2 - создать небольшой сервер на вашем клиенте. Таким образом, в основном, когда происходит обновление, сервер подключается к клиенту и отправляет ему обновления. Я бы порекомендовал эту процедуру, поскольку она позволяет устанавливать соединения между вашим сервером и клиентами только при необходимости. Проблема, в отличие от предыдущего метода, заключается в том, что вам нужно отслеживать порты и IP-адреса ваших клиентов. Вы можете реализовать HashTable с идентификаторами клиентов в качестве ключей и их свойствами подключения в качестве ключей. Получив обновление, вы будете искать клиента в HashTable, получать информацию о соединении, подключаться и отправлять информацию.

Сервер на стороне клиента будет получать данные и делать все, что вы хотите, чтобы клиент делал после получения обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...