2011-12-19 2 views
3

Я пишу программу клиент-сервер в Java.Как обрабатывать логику состояния программы?

Основой является то, что программа представляет eulas и параметры пользователю, и пользователь отвечает соответственно, перемещаясь по меню, пока он не сможет заставить сервер предоставить клиенту требуемый элемент. Например, документ или файл.

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

Каким будет самый простой и/или наиболее эффективный способ решения этой проблемы?

ответ

2

Я бы назначить каждому клиенту идентификатор (например, идентификатор сеанса) и отслеживать состояние на сервере. Это, по-моему, затруднит игру в системе (по принципу, что менее чувствительная информация есть на стороне клиента, тем лучше.)

1

Какой протокол клиент/сервер вы используете? Если вы используете HTTP, вы можете использовать встроенные возможности сеанса предоставляемые сервлеты Java (при условии, что вы используете их тоже.)

Вот учебник:

http://docs.oracle.com/javaee/6/tutorial/doc/bnagm.html

+0

Это просто локальная программа, использующая ServerSockets –

+0

А, я вижу. Я ничего не знаю о том, что предоставляет «сеансы» для TCP-соединений. Однако похоже, что вы используете очень HTTP-подобный протокол (например, вы говорите, что клиент запрашивает ресурс, такой как документ или файл, и сервер отвечает им). Если можно переключиться на HTTP из вашего текущего протокола, то у вас будет уже реализована функция сеанса. – Tom

+1

В качестве альтернативы, если вы используете свой собственный протокол, возможно, вам придется сделать то, что предлагает Тед Хопп, который должен отслеживать каждого клиента, используя какой-то идентификатор. Обычно это называется «идентификатором сеанса» в контексте, связанным с Интернетом. Основная идея, если я не ошибаюсь, заключается в том, что сервер генерирует случайные уникальные идентификаторы для каждого подключаемого клиента. Клиент сохраняет эту информацию и отправляет ее на сервер со всеми последующими сообщениями. – Tom

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