Как закрыть сокет-соединение другого приложения? - PullRequest
1 голос
/ 01 мая 2019

Аналогично тому, что может сделать TCPView.

Есть ли способы сделать это в .net или в winapi?

Мне нужно автоматизировать этот процесс, чтобы симулировать потерянное соединение для моих интеграционных тестов.

Кроме того, я не могу использовать http://www.nirsoft.net/utils/cports.html, поскольку он заблокирован моей компанией.

1 Ответ

1 голос
/ 01 мая 2019

Теперь, когда программа хочет создать сокет, она создает процесс, который прослушивает заранее определенный порт выбора.

Как уже упоминалось в этой теме Вручную закрыть порт из командной строки , сокет привязан к процессу, который его создал.Это означает, что он будет автоматически освобожден, когда процесс завершится.Я предполагаю, что cports (программа, на которую вы ссылались) по существу делает.

Теперь вы можете использовать встроенную программу в windows "netstat", чтобы получить список зарезервированных портов и идентификатор процессов, которые держат их открытыми..

Посмотрите по этой ссылке Проверьте открытые порты TCP / IP в Windows .

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

Резюме: (Мой непосредственный подход был бы ...) Сделать вызов из C # в netstat, получить идентификатор изпорт вашего интереса.И вызов "Taskkill / PID the_id /F".

Попробуйте, надеюсь, это сработает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...