How to determine tcp port used by Windows process in C#

c#, tcp

Solution

Except for PID, take a look this:

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();

Source: Netstat in C#

A bit more research bring this: Build your own netstat.exe with c#. This uses P/Invoke to call `GetExtendedTcpTable` and using same structure as `netstat`.

Problem

Is there a managed class/method that would provide the TCP port number(s) used by a particular Windows processes? I'm really looking for a .NET equivalent of the following CMD line: ``` netstat -ano |find /i "listening" ```

Original source