Исходя из вашей отредактированной версии вопроса, я не уверен, что вам нужно "не прослушать" или закрыть (). На ум приходят два варианта:
1) После того как вы вызываете listen (), соединения фактически не принимаются, пока (достаточно логично) вы не вызовете accept (). Вы можете «отказаться от прослушивания», просто игнорируя активность сокетов и откладывая любые accept () до тех пор, пока вы не будете готовы к ним. Любое входящее соединение пытается выполнить отставание в очереди, которая была создана при открытии порта в режиме прослушивания. Когда очередь стека заполнена в стеке, дальнейшие попытки подключения просто сбрасываются на пол. Когда вы возобновите работу с accept (), вы быстро удалите очередь из очереди и будете готовы к дополнительным соединениям.
2) Если вы действительно хотите, чтобы порт временно казался полностью закрытым, вы можете динамически применить фильтр пакетов уровня ядра к порту, чтобы предотвратить попытки входящих подключений достичь сетевого стека. Например, вы можете использовать Berkeley Packet Filter (BPF) на большинстве * nix-платформ. То есть вы хотите отбрасывать входящие пакеты, поступающие в интересующий порт, используя функции брандмауэра платформы. Это, конечно, зависит от платформы, но это возможный подход.