#java #sockets #netty #out-of-band
Вопрос:
Существует ли какой-либо метод/флаг/сигнал/событие API, который сообщал бы коду прикладного уровня (обработчику в канальном конвейере), что полученный буфер включает сегмент TCP с установленным флагом указателем (т. Е. Был отправлен один байт данных OOB)?
Насколько я могу подтвердить в отладчике SO_OOBINLINE
, параметр не установлен в базовом сокете (я знаю, что мой код его не устанавливает, и по умолчанию он равен false, но я все равно дважды проверил в реальной системе). Тем не менее, хотя срочный байт доставляется в мой код, как если бы он был частью пакета протокола, и, как и следовало ожидать, это нарушает логику декодирования протокола (часть длины пакета).
Есть какие-нибудь указания о том, как обрабатывать такой трафик? (Я не могу контролировать протокол или конкретную обновленную версию клиента, отправляющую эти OOB/срочные данные).
В настоящее время уродливым решением, которое мне, возможно, придется реализовать, будет добавление специальной обработки, которая зависит от жестко заданного значения отправляемого конкретного байта. Поскольку это делает длину пакета необычно большой, я могу проверить ее в классе, из которого я вышел LengthFieldBasedFrameDecoder
.