Классификация данных, передаваемых из java сокета - PullRequest
0 голосов
/ 01 февраля 2020

Я хочу передавать различные типы информации от клиента на сервер через сокет TCP (передача данных, запросить сервер для вызова функции, ...), и они находятся в разных потоках, каждый из которых получает и передает свой тип информации.

Я передаю строки данных с целым числом, добавленным в начало, чтобы пометить и использовать Switch-Case для классификации при получении.

"1 This is a message" ---> Chat:"This is a message"
"2 asd"               ---> function2("asd")
"3 Object1={{...}}"   ---> Update object Object1

Я думаю, что этот способ не хорошо. Какой лучший способ сделать это?

1 Ответ

1 голос
/ 01 февраля 2020

так что вы ищете Сетевые пакеты . Каждый пакет имеет заголовок и полезную нагрузку. Вы можете рассматривать каждый пакет как содержащий идентификатор для отделения разных пакетов друг от друга, а также длину, которая определяет размер входящей полезной нагрузки. Обязательно проверьте Нетти , они сделают для вас большую работу, включая их удивительный ByteBuf . Вот пример того, как это может выглядеть.

byte[] payload = "Hello world!";

int length = payload.getBytes(Charsets.UTF_8);

Packet packet = new Packet(1, length, payload);

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