2010-10-10 26 views
6

J'essaie d'enregistrer le nombre de sockets ouvertes dans mon application serveur C#. Comme les informations que vous pourriez obtenir de « netstat -s »:Obtenir un nombre de sockets ouverts en C#?

TCP Statistics for IPv4 

    Active Opens      = 22765 
    Passive Opens      = 9316 

Je pourrais analyser le résultat de « netstat » .. mais s'il y a une classe pour elle, alors pourquoi devrais-je ..

En passant, avec l'aide de la classe System.Diagnostics.Process, je pourrais enregistrer un certain nombre de poignées, et les discussions. Je pensais qu'un socket est un handle, mais il ne semble pas .. Dans mon cas, le nombre de poignées était nettement inférieur au nombre de connexions actives de netstat.

Toutes les suggestions, avis ou réponses seront grandement appréciés. Merci :)

Répondre

5

Jetez un oeil à la TcpStatistics Class.

Par exemple, TcpStatistics.CurrentConnections Property renvoie «Le nombre de connexions TCP pour lesquelles l'état actuel est ESTABLISHED ou CLOSE-WAIT».

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

vous rock !!! en passant :) – wooohoh

+3

en passant, pour les personnes qui ne veulent pas rechercher le lien ... c'est System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties(). GetTcpIPv4Statistics() – wooohoh

+0

Non disponible dans .Net compact edition 3.5. – Martlark