Edit: чтобы быть более понятным, мне нужно различать разные клиенты, выполняющие удаленный вызов метода в объектах, хранящихся в реестре удаленных объектов сервера. Как я мог это сделать?
А вот и ситуация:
В настоящее время я нахожусь в процессе создания приложения интерфейса командной строки клиент / сервер, использующего Java rmi для обмена данными (хранящимися в строках) между клиентами и сервером.
У меня проблема, в то время как я должен разрешить клиенту отправить команду аутентификации с пользователем / pass. Эта команда аутентификации (например: user myUserName myPassword) должна быть отправлена через тот же удаленно вызываемый метод, который используется для отправки всех других команд, за которые сервер должен ответить.
Моя проблема: клиент должен строго отправлять только свои команды и отображать текстовый результат своей команды, полученный с сервера. Как простой клиент, он не имеет состояния.
Поскольку некоторые методы требуют, чтобы клиент вошел в систему или имел другую реализацию на стороне сервера, если клиент вошел в систему или нет, мне нужно отслеживать состояние клиента, вошедшего в систему на сервере (не проблема, Я планирую просто сохранить отметку времени для каждого пользователя в базе данных пользователей и использовать тайм-аут), а также должен различать клиентов.
Теперь, я думаю, у меня есть хорошее представление о том, как работает удаленный объект, и я смог зарегистрировать удаленный объект на стороне сервера и получить доступ к удаленному методу из него с помощью клиента.
Итак, мне нужно сделать больше, мне нужно, чтобы клиент не только имел доступ к удаленному методу, мне также нужен удаленный метод (и сервер, на котором он запущен), чтобы знать, какой сетевой клиент вызывает этот метод (без передачи имя пользователя / пароль клиента в качестве параметров в удаленном методе).
Я думаю, что rmiclientsocketfactory и rmiserversocketfactory должны быть специально использованы для этого, но я не знаю, как поступить.
спасибо всем за потраченное время.