372 votes

Comment obtenir mon adresse IP en c# ?

J’ai fais tourner un serveur, et je veux afficher mon adresse IP.

Quelle est la syntaxe pour obtenir de l’ordinateur (si possible, externe) adresse IP ?

Quelqu'un a écrit le code suivant.

Cependant, je me méfie généralement l’auteur, et je ne comprends pas ce code. Y a-t-il une meilleure façon de le faire ?

239voto

Andrew Hare Points 159332

Nope, c’est assez bien la meilleure façon de le faire. Comme une machine peut avoir plusieurs adresses IP, vous devrez parcourir la collection d'entre eux de trouver la bonne.

Edit : La seule chose que j’ai serait le changement serait de changer cela :

pour cela :

Il n’y a pas besoin de `` une énumération pour comparaison.

168voto

ezgar Points 1175

La seule façon de connaître votre adresse IP publique est de demander à quelqu'un d’autre à vous dire ; Ce code peut vous aider :

82voto

Mohammed A. Fadil Points 3583

Nettoyant et une solution tout en un :D

51voto

Si vous ne pouvez pas compter sur l'obtention de votre adresse IP d'un serveur DNS (ce qui m'est arrivé), vous pouvez utiliser l'approche suivante:

Le Système.Net.NetworkInformation espace de noms contient un NetworkInterface classe, qui a une statique GetAllNetworkInterfaces méthode.

Cette méthode sera de retour tous les "interfaces réseau" sur votre machine, et il n'y a généralement pas mal, même si vous avez seulement un adaptateur sans fil et/ou un adaptateur ethernet matériel installé sur votre machine. L'ensemble de ces interfaces réseau ont des adresses IP valides pour votre machine locale, bien que vous avez probablement ne veulent qu'une seule.

Si vous êtes à la recherche d'une adresse IP, alors vous aurez besoin pour filtrer la liste vers le bas jusqu'à ce que vous pouvez identifier la bonne adresse. Vous aurez probablement besoin de faire de l'expérimentation, mais j'ai eu du succès avec l'approche suivante:

  • Filtrer les NetworkInterfaces qui sont inactifs en vérifiant OperationalStatus == OperationalStatus.Up. Cela exclut de votre physique de la carte ethernet, par exemple, si vous ne disposez pas d'un câble réseau branché.

Pour chaque NetworkInterface, vous pouvez obtenir un IPInterfaceProperties objet à l'aide de la GetIPProperties méthode, et à partir d'un IPInterfaceProperties objet, vous pouvez accéder à la UnicastAddresses propriété pour une liste de UnicastIPAddressInformation objets.

  • Filtre non-privilégiées adresses unicast en vérifiant DuplicateAddressDetectionState == DuplicateAddressDetectionState.Preferred
  • Filtrer "virtuel" des adresses en vérifiant AddressPreferredLifetime != UInt32.MaxValue.

À ce stade, je prends l'adresse de la première (le cas échéant) adresse monodiffusion qui correspond à l'ensemble de ces filtres.

37voto

James Points 355
WebClient webClient = new WebClient();
string IP = webClient.DownloadString("http://myip.ozymo.com/");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X