[C#] Trouver l'IP internet

JE cherches à faire un petit programme qui indique l’IP publique d’un ordinateur.

Le seul problème c’est que je voudrais que ca fonctionne aussi pour un ordinateur planqué derriere un NAT. (ce qui donnerait l’ip du routeur qui fait le NAT). Ya til un moyen rapide de faire ca? J’ai pas trouvé des fonctions qui pourraient correspondre dans la classe Dns…

Bah, il existe un protocole fait pour ca. Il te permet même de détecter le port UDP mappé … STUN, RFC 3489.

Et comme j’ai eu besoin de la chose pour un projet perso …

http://crashmachine.tzim.net/tmp/StunLib.rar

Enjoy !

Merci ca marche au poil… toutefois… est ce qu’il y aurait pas moyen de se passer d’un serveur externe?

Bah non, impossible, par definition.

A moins que le NAT support UPnP… mais c’est trop rare pour etre vraiment exploitable.

Bah j’aurais peut être vu cette solution: de la machine qui demande, faire un genre de traceroute et récupérer la première addresse non locale… meme si le traceroute trace vers une ip qui n’existe pas, ca va “fonctionner” vu que les passerelles sont configurés et donc vont tenter de sortir le paquet.

Nan, pasque le traceroute ne te doneras jamais l’IP des interfaces “sortantes” des routeurs, mais uniquement des interfaces “entrantes”, de ton point de vue. La seule IP que tu pourra obtenir est l’adresse IP privée de la passerelle.