c ++ Какой процесс прослушивает определенный порт в Windows? - PullRequest
2 голосов
/ 28 октября 2010

Я создал программу на Visual C ++, где я реализовал веб-сервис. Веб-служба настроена на прослушивание порта 80, но если другая программа уже использует этот порт, веб-служба не запустится.

Поэтому, когда веб-служба не может запуститься, я хотел бы иметь функцию или метод, который может получить имя процесса, который в настоящее время использует порт 80. Затем я могу напечатать ошибку пользователю и спросить его закрыть процесс.

Ответы [ 3 ]

3 голосов
/ 28 октября 2010

GetExtendedTcpTable и GetExtendedUdpTable предоставляют список сетевых подключений.Вы можете просмотреть этот список и проверить, использует ли программа порт 80 (он также предоставляет идентификаторы процессов).

0 голосов
/ 28 октября 2010

Не уверен, если есть способ сделать это через API (не для Windows-программиста), однако вы можете попробовать netstat -abo в качестве команды оболочки, затем найти TCP и порт 80 в полученной строке, и вы 'будет иметь двоичное имя ...

РЕДАКТИРОВАТЬ: Я полагаю, что вам нужно по крайней мере XP SP2 для этого ...

0 голосов
/ 28 октября 2010

Я бы рассмотрел в качестве первой попытки запуск netstat как внешнего процесса и захват / анализ выходных данных. Это дает вам активные соединения.

...