TcpListener: отклонить входящий запрос на подключение перед подключением

У меня есть служба, которая открыта для всех в общедоступном Интернете. Он запускает TcpListener для управления входящими соединениями.

Служба ведет список клиентов, которые постоянно ведут себя неадекватно, по их входящим IP-адресам. Любые соединения, поступающие с указанного IP-адреса, отправляются с сообщением «уйти», поскольку соединение закрывается.

Я бы предпочел, чтобы сокет вообще не открывался, но к моменту возврата AcceptTcpClient соединение уже открыто.

Есть ли способ, чтобы мой код вмешался и проверил входящие запросы на подключение (и, возможно, отклонил их) до того, как они будут открыты?

Большое спасибо.


person billpg    schedule 22.03.2011    source источник


Ответы (2)


Поскольку вы используете .Net, я предполагаю, что вы должны работать под Windows.

API сокетов не может сделать то, что вы ищете. Однако вы можете добавить в свою программу правила брандмауэра Windows для достижения той же цели — при условии, что брандмауэр Windows включен.

person Heath Hunnicutt    schedule 22.03.2011

WSAAccept позволяет указать обратный вызов, который может решить, принять или отклонить соединение. См. этот вопрос, чтобы узнать, как вызвать его из C#.

person Vladimir Panteleev    schedule 23.01.2017