T>Напомню что не блокирующий сonnect мне делать нельзя. T>Такие вот условия.
А почему нельзя? Делаешь неблокирующий коннект, спрашиваешь состояние некоего евента — если не поднят, опять коннект неблокрующий и т.д.
Соответственно, в другом потоке когда надо будет коннект прервать, устанавливаешь евент — и вуаля.