Java) выберите токен, который люди не могут ввести, или другую идею для решения этой проблемы - PullRequest
0 голосов
/ 02 августа 2020

Я делаю чат-программу, и у меня проблемы ..

Я пытаюсь stringtokenize пакет. пакет включает 4 элемента.

 Timestamp sendTime, String sendUserID, String chattingMessage, String roomNo.

когда клиентская сторона отправляет этот пакет, (packet is string :: String packet;) я пытаюсь токенизировать этот пакет каким-то специальным символом (#,@,^ ..) или чем-то еще на стороне сервера, но из-за chattingMessage, (chattingMessage может включать любой специальный символ .. (пользователь может ввести любой символ в сообщении .. так как выбрать мой токенизирующий символ ?? ..)

Я не могу выбрать подходящий ...

Есть ли у кого-нибудь идея, решение этой проблемы ?? Мне так любопытно ..

Ответы [ 3 ]

1 голос
/ 02 августа 2020

Разработайте пакет так, чтобы он включал длину строк перед содержимым строки. Тогда вы знаете, где заканчивается эта строка в вашем пакете и начинается следующий фрагмент данных.

Вы можете, например, изучить, как форматируются файлы .torrent для BitTorrent . Разработка формата сериализованного пакета на самом деле такая же, как разработка формата файла, единственная разница заключается в том, откуда вы читаете данные.

0 голосов
/ 02 августа 2020

Я думаю, что клиентская сторона должна отправлять byte [] вместо String.
И пакет должен быть через POJO, который должен быть сериализован / десериализован в процессе связи.

0 голосов
/ 02 августа 2020

Замените любые экземпляры \ в сообщении пользователя на \\. Затем замените ) на \). Когда вы проверяете наличие ), убедитесь, что перед ним нет \. При отображении сообщения пользователю удалите все \ s, которые не обрабатываются другим \.

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