Создание IM-клиента на Java

#java

#java

Вопрос:

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

Поскольку я получаю входные данные от клиента System.in , я не могу отличить, когда клиент пытается зарегистрировать имя пользователя или отправить сообщение. Как я могу эффективно различать, что есть что на стороне сервера, когда текст принимается от клиента?

Я рассмотрел вопрос о том, чтобы потребовать от клиента указать пользователя для отправки, что будет служить индикатором того, что это было сообщение. Это было бы похоже на внутриигровые чаты, где вы вводите «/ сообщить сообщение имени пользователя».

Комментарии:

1. Не могли бы вы прояснить этот вопрос?

2. Похоже, вы хотите в какой-то степени написать свой собственный протокол. Использование существующего протокола потребовало бы намного меньше работы и было бы намного безопаснее. Рассмотрите некоторые из тех, которые упомянуты в ответах ниже, прежде чем пытаться написать свой собственный.

Ответ №1:

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

Если вы предпочитаете этого не делать, попробуйте черпать вдохновение у них. Например, протокол IRC — это все о командах. Чтобы написать личное сообщение пользователю или отправить сообщение на канал, вы отправляете PRIVMSG команду на сервер, затем сервер анализирует команду, извлекает имя команды, получателя и сообщение, а затем заботится о том, чтобы отправить сообщение получателю.

Комментарии:

1. Для дальнейшей поддержки ответа Раду: авторы IRC и XMPP уже подумали, обсудили и остановились на оптимальном решении точного вопроса, который вы задали. Сэкономьте немного времени и не изобретайте велосипед.