Дело в том, что в рамках концепции ПЛК - жесткий контроль за ресурсами классический подход, когда Вы функцией listen получаете доп. сокет при установлении соединения - не работает. 1 соединение-1 сокет, не больше и не меньше.
Соответственно создаете сокет и дальше просто ждете, когда начнут приходить данные (или сами начинаете передавать). Анализируя ответ функций чтения/записи и код посл. ошибки Вы и можете определить, есть соединение или нет.
Такой подход гарантирует, что вне зависимости от числа входящих соединений у Вас всегда для каждого требуемого сервиса будет нужное число сокетов.