#java
#java
Вопрос:
Я создаю простой IM-клиент, в котором экземпляр клиента может подключаться к серверу через порт, а затем отправлять и получать сообщения от других подключенных пользователей.
Поскольку я получаю входные данные от клиента System.in
, я не могу отличить, когда клиент пытается зарегистрировать имя пользователя или отправить сообщение. Как я могу эффективно различать, что есть что на стороне сервера, когда текст принимается от клиента?
Я рассмотрел вопрос о том, чтобы потребовать от клиента указать пользователя для отправки, что будет служить индикатором того, что это было сообщение. Это было бы похоже на внутриигровые чаты, где вы вводите «/ сообщить сообщение имени пользователя».
Комментарии:
1. Не могли бы вы прояснить этот вопрос?
2. Похоже, вы хотите в какой-то степени написать свой собственный протокол. Использование существующего протокола потребовало бы намного меньше работы и было бы намного безопаснее. Рассмотрите некоторые из тех, которые упомянуты в ответах ниже, прежде чем пытаться написать свой собственный.
Ответ №1:
Вам следует рассмотреть возможность реализации или использования библиотеки для уже существующего протокола, такого как IRC или XMPP.
Если вы предпочитаете этого не делать, попробуйте черпать вдохновение у них. Например, протокол IRC — это все о командах. Чтобы написать личное сообщение пользователю или отправить сообщение на канал, вы отправляете PRIVMSG
команду на сервер, затем сервер анализирует команду, извлекает имя команды, получателя и сообщение, а затем заботится о том, чтобы отправить сообщение получателю.
Комментарии:
1. Для дальнейшей поддержки ответа Раду: авторы IRC и XMPP уже подумали, обсудили и остановились на оптимальном решении точного вопроса, который вы задали. Сэкономьте немного времени и не изобретайте велосипед.