Один из действительно тривиальных способов исправить вашу реализацию - добавить не частные сообщения к чему-то другому, скажем, "NORM|"
. Таким образом, вы не можете подделывать личные сообщения с обычными.
Не совсем уверен, что PRIV|
достаточно, хотя, личное сообщение кому-то отправлено, так что вам придется включить получателя тоже верно?
В любом случае, обычный способ сделать это - сформировать «пакеты» из ваших команд. Ваш пакет будет содержать полезную нагрузку (текст для отправки) вместе с заголовком (первые несколько байтов, которые обычно начинаются с длины пакета, затем идентификатор команды - обычное сообщение msg, личное сообщение msg, команда / who, ping / pong и т. Д. И т. Д. И т. Д. , а затем некоторые произвольные данные для конкретной команды, которую вы выбрали, например, скажем .. имя получателя). Вы МОЖЕТЕ превратить его в одну строку, если хотите, например, путем объединения полей с |
символами, как в вашем сообщении, но это ограничивает ваш выбор полей не-|
символами. Лучше отправлять их в двоичном формате.
обновление : относительно вашего добавления я не вижу, о какой ошибке вы говорите. Код кажется нормальным для меня. Вы разбиваете строку на токены и сначала проверяете токен команды (priv / chat / what), а затем решаете, как обрабатывать остальные токены (в данном случае это сообщение), в зависимости от того, какой была команда.
Мне нужно увидеть больше кода, что вы ожидаете получить и что вы получаете, чтобы помочь вам в дальнейшем.