Как определить порт TCP, используемый процессом Windows в C # - PullRequest
5 голосов
/ 30 ноября 2009

Существует ли управляемый класс / метод, который бы предоставлял номера портов TCP, используемые определенными процессами Windows?

Я действительно ищу .NET эквивалент следующей строки CMD:

netstat -ano |find /i "listening"

Ответы [ 2 ]

15 голосов
/ 30 ноября 2009

За исключением PID, посмотрите это:

IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();

IPEndPoint[] endPoints = ipProperties.GetActiveTcpListeners();
TcpConnectionInformation[] tcpConnections = 
    ipProperties.GetActiveTcpConnections();

foreach (TcpConnectionInformation info in tcpConnections)
{
    Console.WriteLine("Local: {0}:{1}\nRemote: {2}:{3}\nState: {4}\n", 
        info.LocalEndPoint.Address, info.LocalEndPoint.Port,
        info.RemoteEndPoint.Address, info.RemoteEndPoint.Port,
        info.State.ToString());
}
Console.ReadLine();

Источник: Netstat в C #

Немного больше исследований принесло это: Создайте свой собственный netstat.exe с помощью c # . Это использует P / Invoke для вызова GetExtendedTcpTable и использует ту же структуру, что и netstat.

3 голосов
/ 30 ноября 2009

Смотрите здесь эквивалент netstat в C #: http://towardsnext.wordpess.com/2009/02/09/netstat-in-c/

Обновление: Ссылка не работает, но вот эквивалент: http://www.timvw.be/2007/09/09/build-your-own-netstatexe-with-c

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