Сокет конец обнаружения данных - PullRequest
0 голосов
/ 02 ноября 2018

Я довольно новичок в Java и пытаюсь установить сокет-соединение между сервером и клиентом, и мне сказали работать с Java.

До того, как я начал программировать на Java, я работал с QT, у которого есть сигнал / слот для приема данных из сокета, я считаю этот способ очень эффективным.

Кажется, что в Java мне нужно добавить символ, такой как символ новой строки "\ n" в конце данных, чтобы мои клиенты сказали, что я отправил их на сервер. Но QT, похоже, ищет заголовок и нижний колонтитул сообщения (на уровне пакета, а не в кодах ASCII) и может определять окончание передачи, не просматривая сами данные для специального символа или ожидая закрытия соединения.

Я в основном получаю HEX-коды, а не ASCII, поэтому плохой идеей будет иметь конечный символ (строка \ n), потому что мне нужны эти символы в качестве данных, а не команд, поэтому readline() невозможно использовать.

С другой стороны, длина моих данных варьируется от 4 байтов до 120 байтов, а время между получением сообщения варьируется от 0,001 секунды до часа, поэтому я не могу использовать метод read(), так как он убивает сообщение и отделяет байты от друг друга. Например, если два сообщения возвращаются друг к другу как два, пять байтов, они могут быть неправильно прочитаны как одно сообщение из 10 байтов.

1 Ответ

0 голосов
/ 02 ноября 2018

Вы можете использовать Apache JMeter. Отправьте шестнадцатеричную строку как байт []. Вы также можете использовать eom (конец сообщения).

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