2013-12-09 61 views
3

是否有可能使用.NET枚舉當前進程的所有打開連接? (同樣的方式使用netstat工具做到這一點)枚舉所有打開的連接

+1

你要問關於TCP/UDP連接? – YOusaFZai

+0

@SALMAN KHAN,TCP就足夠我的任務 – user626528

+0

http://stackoverflow.com/questions/1819364/how-to-determine-tcp-port-used-by-windows-process-in-c-sharp – YOusaFZai

回答

1
 IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties(); 
     TcpConnectionInformation[] connections = properties.GetActiveTcpConnections(); 

則必須將此數組轉換爲IEnum

+0

請注意,數組已經實現了'IEnumerable' - 不需要轉換。 –

+0

thanx糾正我... – YOusaFZai

0

您可以在.NET中IPGlobalProperties類做到這一點。有了一個實例,您可以得到任何的三件事netstat通常顯示:

請注意,沒有「UDP連接」這樣的東西。

這裏的netstat的簡單版本,使用這個API:

using System; 
using System.Net.NetworkInformation; 

namespace NetStatNet 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var props = IPGlobalProperties.GetIPGlobalProperties(); 

      Console.WriteLine(" Proto Local Address   Foreign Address  State"); 

      foreach (var conn in props.GetActiveTcpConnections()) 
       Console.WriteLine(" TCP {0,-23}{1,-23}{2}", 
            conn.LocalEndPoint, conn.RemoteEndPoint, conn.State); 

      foreach (var listener in props.GetActiveTcpListeners()) 
       Console.WriteLine(" TCP {0,-23}{1,-23}{2}", listener, "", "Listening"); 

      foreach (var listener in props.GetActiveUdpListeners()) 
       Console.WriteLine(" UDP {0,-23}{1,-23}{2}", listener, "", "Listening"); 

      Console.Read(); 
     } 
    } 
}