Есть рукописные толстый клиент и сервер. Оба многопоточные. Из-за ряда соображений был написан собственный протокол поверх tcp.
Как было раньше... Клиент сотоит из ряда слабосвязанных между собой модулей, которым надо обращаться к серверу. Каждый из модулей делал отдельное соединение к серверу и держал его. По этому соединению ходили запросы/ответы. Как результат один клиент мог открывать по многу сессий на сервер, которые по большей части простаивали.
Как хочется сделать... Открыть одно соединение с сервером и пустить через него все модули клиента. Встает проблема создания нескольких независимых сессий на одном сокете. В своем первом посте я немного расписал пути решения с возможными последствиями. Что это в итоге даст? В итоге будет нормальная загруженность сокета с минимальным количеством потоков на его обслуживание и отсутствие нескольких соединений от одного пользователя на сервере.