Java-сокеты с внешними данными - PullRequest
5 голосов
/ 11 февраля 2009

Кто-нибудь знает, как получать (как узнать, что вы получили) внеполосные данные с помощью сокетов Java? В частности, я прочитал документацию для sendUrgentData и setOOBInline , в которой говорится:

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

Но я все еще надеюсь, что у кого-то есть решение: -)

Подробнее:

Я посылаю сериализованные объекты через сокет, и я не вижу, как найти «случайный» байт OOB, вставленный в поток (кроме того факта, что Java выдаст мне исключение при попытке десериализовать объект).

Ответы [ 2 ]

2 голосов
/ 03 ноября 2009

Tomcat имеет поддерживаемую реализацию сокета JNI, который может читать срочные пакеты в режиме OOB.

2 голосов
/ 11 февраля 2009

Похоже на Java, вплоть до Java 6 (я не исследовал Java 7, так как не знаю, решили ли они наверняка, что будет входить или нет), и похоже, что Java не оказывает никакой поддержки вообще для чтения срочной информации TCP внеполосным способом. И, похоже, это пока осознанный выбор.

Однако я нашел одного пользователя, который реализовал свое собственное решение , используя JNI, для успешного чтения срочных данных из потока. Этот хак очень старый и может работать, а может и не работать на последних JDK. Я не пробовал это сам! Ваш пробег может варьироваться. :) Но, надеюсь, это поможет вам.

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