1. Открываете какой-либо заранее заданный UDP-порт на прослушивание. (Если проблема в том, что Вы боитесь, что порт будет уже занят каким-то другим сервисом, то заведите пул портов 5-10 в разных частях диапазона).
2. Отправляете широковещательный UDP-пакет на этот порт(ы) с определенной сигнатурой. Если такая сигнатура получена - начинаете обмен. Если какой-то другой сервис занял этот порт, то он просто проигнорирует неизвестную ему сигнатуру.
Широковещательные TCP-запросы невозможны - только UDP.
Если задача установить именно TCP-соединение, то перед широковещательной рассылкой открываете какой-либо свободный TCP-порт на прослушивание, а в UDP-пакете после сигнатуры, указываете, какой номер TCP-порта открыт.
Если боитесь, что TCP-порт на данной машине уже занят каким-то другим сервисом на прослушивание, то процедура listen просто вернет Вам ошибку и Вы выберете следующий свободный.