На базовом уровне сокеты либо открыты, либо закрыты (здесь мы будем игнорировать тонкости диаграммы состояний TCP / IP).
Если ваш сокет закрыт, то ничто не может отправить в него данные. Если он открыт, то входящие данные будут приниматься и подтверждаться стеком TCP / IP до тех пор, пока алгоритм буферизации не выдает «достаточно!». В этот момент дальнейшие данные не будут подтверждены.
У тебя есть два варианта, которые я вижу. Либо закройте () сокет, если вы хотите «отменить прослушивание», и откройте его позже - используйте setsockopt () с флагом SO_REUSEADDR, чтобы позволить вам выполнить повторную привязку к известному порту до истечения времени TIME_WAIT2.
Другой вариант - оставить сокет открытым, но просто не принимать от него (), пока вы «заняты». Предполагая, что у вас есть подтверждение на уровне приложения для запросов, вы балансировщик нагрузки поймете, что он не получает ответ и действовать соответствующим образом.