Как проверить, кто использует определенный порт в C #? - PullRequest
3 голосов
/ 02 февраля 2012

Как определить, какой процесс / какой исполняемый файл использует, скажем, порт 80 моего локального хоста?Я хотел бы знать, например, если это Apache Server и т. Д.

Можем ли мы получить некоторую информацию от ipProperties.GetActiveTcpListeners ()?Я видел только локальную конечную точку, удаленную конечную точку и состояние.

1 Ответ

5 голосов
/ 02 февраля 2012

Вы можете передать вывод netstat -o и проанализировать его, но это, вероятно, ужасная идея, полная головных болей и крайних случаев.

За кулисами netstat -o использует GetTcpTable2 Метод API из библиотеки IPHelper, который возвращает структуру MIB_TCPTABLE2, причем каждый порт представлен структурой MIB_TCPROW2.Вам нужно будет использовать P / Invoke для доступа к этому из C #, построения структур взаимодействия для таблицы и строки

Проверяя PInvoke.Net, я вижу, что аналогичный вызов API уже был сопоставлен с C # - GetExtendedTcpTable - в котором перечислены доступные TCP-порты для приложения.Вы можете использовать это в качестве основы для построения структур взаимодействия и объявлений.

...