Как сказал @Blindy, вам нужно принять входящее соединение, а затем закрыть его, если вы решите, что не хотите устанавливать это соединение. До возврата Accept
у вас нет ссылки на Socket
, поэтому вы не можете сделать что-либо, что позволило бы вам принять решение о том, принимать или не принимать, на основе клиента (например, проверить предоставленные учетные данные). или адрес источника соединения).
С точки зрения клиента, после подключения к сокету Listen
соединение устанавливается (соединение устанавливается с портом прослушивания ОС, а затем передается вам в вызове Accept
). Нельзя подделать ошибку типа «Соединение отказано / другая сторона активно отказала в соединении» на Socket
, который находится в состоянии прослушивания. Так что Accept
, за которым следует Close
, будет выглядеть для клиента так же, как если бы у Accept
был какой-то способ прервать соединение.
Если у вас есть программная причина, по которой вы не разрешаете больше подключений (например, вам нужен только один клиент за раз), вы можете отключить сокет Listen
ing после того, как он примет соединение, но обычно плохая идея.