使用C#列出使用的TCP端口

这是我的问题的答案。

如何在C#中列出绑定/使用的TCP端口。 使用jro修改过的代码

static void ListUsedTCPPort(ref ArrayList usedPort) { IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); IPEndPoint[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpListeners(); IEnumerator myEnum = tcpConnInfoArray.GetEnumerator(); while (myEnum.MoveNext()) { IPEndPoint TCPInfo = (IPEndPoint)myEnum.Current; usedPort.Add(TCPInfo.Port); } } 

原始问题。 这就是我使用C#列出TCP端口的方法。 它是我在这个论坛中找到的修改后的代码(忘了我到底的确切位置。如果你是原始开发者,请通知我并将应付信用点放到应有的位置。)

  //List used tcp port static void ListUsedTCPPort(ref ArrayList usedPort) { IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); TcpConnectionInformation[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections(); IEnumerator myEnum = tcpConnInfoArray.GetEnumerator(); while (myEnum.MoveNext()) { TcpConnectionInformation TCPInfo = (TcpConnectionInformation)myEnum.Current; usedPort.Add(TCPInfo.LocalEndPoint.Port); } } 

问题是,结果与TCPview(Protocol-TCP,Local port)中列出的使用的tcp端口不同。 顺便说一句,我知道这个列表在其调用的时间使用了TCP端口。 我做错了什么?

我得到了相同的结果:

替代文字

但它也会显示可能关闭也可能不关闭的侦听器( ipGlobalProperties.GetActiveTcpListeners() )。

使用你的例子(在那里有一个额外的Console.WriteLine

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Net.NetworkInformation; using System.Collections; namespace ConsoleApplication1 { static class Program { //List used tcp port static void ListAvailableTCPPort(ref ArrayList usedPort) { IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); TcpConnectionInformation[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections(); IEnumerator myEnum = tcpConnInfoArray.GetEnumerator(); while (myEnum.MoveNext()) { TcpConnectionInformation TCPInfo = (TcpConnectionInformation)myEnum.Current; Console.WriteLine("Port {0} {1} {2} ", TCPInfo.LocalEndPoint, TCPInfo.RemoteEndPoint, TCPInfo.State); usedPort.Add(TCPInfo.LocalEndPoint.Port); } } public static void Main(){ ArrayList usedPorts = new ArrayList(); ListAvailableTCPPort(ref usedPorts); Console.ReadKey(); } } } 

这有点猜测,但TCPView可能还会显示监听器tcp端口(ipGlobalProperties.GetActiveTcpListeners())