如何在C#中确定Windows进程使用的tcp端口

时间:2009-11-30 11:54:52

标签: c# tcp

是否有托管类/方法提供特定Windows进程使用的TCP端口号?

我真的在寻找以下CMD系列的.NET等价物:

netstat -ano |find /i "listening"

2 个答案:

答案 0 :(得分:15)

除了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 in C#

更多研究带来了这个:Build your own netstat.exe with c#。这使用P / Invoke来调用GetExtendedTcpTable并使用与netstat相同的结构。

答案 1 :(得分:3)

请参阅此处了解C#中的netstat等效项:http://towardsnext.wordpess.com/2009/02/09/netstat-in-c/

更新:链接已损坏,但这是等效的:http://www.timvw.be/2007/09/09/build-your-own-netstatexe-with-c