Возможно, это самый странный вопрос, который здесь задают. Я постараюсь объяснить это как можно лучше.
Мне нужно быстро разработать сетевое приложение на Java, интегрировать кучу старых сетевых приложений (у меня уже есть код для них) и заставить все работать вместе. Каждое старое приложение станет подфункцией нового; новый по сути является «оберткой».
Очевидно, что каждое из этих приложений (которые были разработаны разными людьми в разное время) работают по-разному, с разными протоколами, с радикально разным синтаксисом для сообщений (то есть некоторые протоколы используют двоичные сообщения, другие используют HTTP как сообщения, некоторые другие используют XML) и различные стратегии порядка сообщений (конвейерная обработка, остановка и ожидание и т. д.).
К счастью, все они TCP.
Приложение-оболочка должно работать, открывая что-то вроде 6-7 разных сокетов на разных портах, и это плохо для наших сетевых администраторов. Они хотят только один сокет на один порт. Таким образом, все протоколы должны быть в одном канале.
Существует ли чистое Java, готовое решение для мультиплексирования и демультиплексирования множества независимых полнодуплексных потоков в одном и том же сокете TCP , прозрачным и без проблем?
Или есть более простое решение, о котором я забыл?
РЕДАКТИРОВАТЬ: подпотоки независимы, то есть нет возможности тупиковой ситуации, вызванной одним подпотоком, ожидающим некоторого материала, поступающего от другого.