TcpListener: отклонить входящий запрос на соединение перед соединением - PullRequest
0 голосов
/ 22 марта 2011

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 24 января 2017

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

0 голосов
/ 22 марта 2011

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

Невозможно выполнить API-интерфейс сокетов.Однако ваша программа может добавить правила брандмауэра Windows, чтобы выполнить то же самое - при условии, что у вас включен брандмауэр Windows.

...