Vert.x Чтение с частичных байтов TCP - PullRequest
0 голосов
/ 06 марта 2020

Я хочу создать TCP-сервер, который принимает определенный пользовательский протокол от устройств IoT.

В netty он дает буферизованные байты, и вы используете метод read для получения some (4, 8, 16 п) байт. Затем операция вернет эти байты и переместит индекс буфера.

Если текущая длина буферизованного байта меньше запрашиваемой, тогда она будет ожидать следующего потока, добавит его, и операция начнется снова.

В asyncio (python) чтение (n) имеет аналогичную функциональность.

В vert.x есть подобный метод для чтения буферизованных байтов? Я знаю, что вы получаете объект Buffer. Но индекс буфера не будет автоматически двигаться, кажется? И ждет ли он следующих байтов ??

1 Ответ

0 голосов
/ 09 марта 2020

Вам необходимо использовать анализатор записей :

Анализатор записей позволяет легко анализировать протоколы, разделенные последовательностью байтов или записями фиксированного размера.

Чтобы создать анализатор записей для записей фиксированного размера:

RecordParser.newFixed(4, h -> {
  System.out.println(h.toString());
});

Можно также создавать анализаторы записей для использования ReadStream, например, для входа TCP-соединения.

...