2015-01-24 2 views
1

Я использую Camel + Netty для подключения сокетов. В camel-context файле, я использую Нетти для моего подключения к сокету, но я хочу Нетти вести себя так:Как читать ответ сокета?

Нетти должно читать символы из входного потока с размером, равный inputstream.available() но Нетти блокирует код, потому что он ожидает \r\n или \r или \n в конец входного потока.

Как настроить Netty для выполнения этой функции? Какие варианты Netty следует использовать?

Я использую textline=true.

+0

Чтение 'доступных()' байтов - это не решение чего-либо. Ваш вопрос наиболее неясен, и он также нуждается в редактировании, чтобы поставить его на стандартный английский. – EJP

ответ

0

Как насчет добавления autoAppendDelimiter=false в конечную точку? Может быть, пример кода был бы очень полезен.

1

Основываясь на вашем описании, вы читаете определенное количество символов из протокола, где каждое сообщение (строка) имеет одинаковую длину. Строка кода Use textline = true сообщает Netty, что вы будете отправлять текстовый протокол, т. Е. Строка может иметь переменный размер и заканчиваться последовательностью символов, такой как \r\n.

Установка этой строки в значение false приведет к тому, что Netty будет ждать терминатора EOL. Однако вам нужно будет реализовать некоторую форму кодека для чтения вашего протокола. Ваш кодек довольно упрощен, так как кажется, что все линии будут иметь одинаковую длину.

Смежные вопросы