2010-10-10 8 views
6

Sto cercando di registrare il numero di socket aperti nell'applicazione server C#. Come le informazioni che potrebbe ottenere da "-s" netstat:Ottieni un numero di socket aperti in C#?

TCP Statistics for IPv4 

    Active Opens      = 22765 
    Passive Opens      = 9316 

ho potuto analizzare il risultato da "netstat" .. ma se c'è una classe per esso, allora perché dovrei ..

A proposito, con l'aiuto della classe System.Diagnostics.Process, ho potuto registrare un numero di handle e thread. Ho pensato che un socket è un handle, ma non sembra .. Nella mia situazione, il numero di handle era molto al di sotto # delle connessioni attive da netstat.

Qualsiasi suggerimento, consiglio o risposta sarà molto apprezzato. Grazie :)

risposta

5

Dai un'occhiata allo TcpStatistics Class.

Ad esempio, TcpStatistics.CurrentConnections Property restituisce "Il numero di connessioni TCP per cui lo stato corrente è ESTABLISHED o CLOSE-WAIT."

long result = IPGlobalProperties.GetIPGlobalProperties() 
           .GetTcpIPv4Statistics() 
           .CurrentConnections; 
+0

si rock !!! grazie :) – wooohoh

+3

a proposito, per le persone che non vogliono cercare il link ... è System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties(). GetTcpIPv4Statistics() – wooohoh

+0

Non disponibile in .Net compatto edizione 3.5. – Martlark