Теперь, когда программа хочет создать сокет, она создает процесс, который прослушивает заранее определенный порт выбора.
Как уже упоминалось в этой теме Вручную закрыть порт из командной строки , сокет привязан к процессу, который его создал.Это означает, что он будет автоматически освобожден, когда процесс завершится.Я предполагаю, что cports (программа, на которую вы ссылались) по существу делает.
Теперь вы можете использовать встроенную программу в windows "netstat", чтобы получить список зарезервированных портов и идентификатор процессов, которые держат их открытыми..
Посмотрите по этой ссылке Проверьте открытые порты TCP / IP в Windows .
Существует несколько способов запустить программу, а затем получить вывод 'stdдля дальнейшей обработки.Вот ссылка, которая показывает, как Выполнить команду в C # .
Резюме: (Мой непосредственный подход был бы ...) Сделать вызов из C # в netstat, получить идентификатор изпорт вашего интереса.И вызов "Taskkill / PID the_id /F".
Попробуйте, надеюсь, это сработает для вас.