Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
578 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  C# obtenir l'IP d'une interface spécifique par son nom "window"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C# obtenir l'IP d'une interface spécifique par son nom "window"

n°2010870
uinetpropa​ne
Posté le 22-07-2010 à 00:41:16  profilanswer
 

Bonjour,
 
Etant nouveau sur le forum je vais brievement me présenter. Informaticien (de base) orienté système et réseau, programmeur amateur a mes heures perdues. J'ai tout de meme quelques experiences en prog, principalement en VB, C, C#, PHP. Ces derniers temps, je fais du XNA. Et également depuis ce soir un petit outil tout bête qui doit servir à mettre a jour une IP dynamique auprès du service No-IP, en C# ou VB.Net.
 
Le cas :
1 serveur win2003 qui fait office de DNS public, et avec 3 interfaces réseaux. 2 WAN - 1 LAN (donc aussi "routeur" ). Les 2 IP WAN sont dynamiques.
 
Le probleme
2 host gratuit chez No-IP a mettre a jour (underinet-ns1.no-ip.org et underinet-ns2.no-ip.org). underinet-ns1 est mis a jour avec le client de No-IP. Mais je doit aussi mettre a jour l'autre pour que mon gestionnaire de nom de domaine arrete de me notifier qu'il me manque 1 DNS (vu que seul 1 host répond).
 
Rem : ne vous posez pas trop de questions par rapport au serveur, c'est dans mon réseau perso qui ressemble plus a une experience qu'a un réseau professionnel, mais ca tourne nickel chrome (pour les curieux http://www.underinet.ch/ddns.htm )
 
J'ai donc chercher tout d'abord a mettre a jour underinet-ns2 a travers une "bidouille système" pour permettre au client No-IP de tourner 2x sur le serveur. J'ai forcer l'ajout d'un second service, en prenant soin de deboubler toutes les references que le service No-IP a, puis créer 2 utilisateurs admin locaux distinct et assigner a chaque service. Impossible de faire tourner le client en //. Il n'y a qu'une instance qui tourne ( :sweat: )
 
J'ai donc chercher a bidouiller le réseau, avec un switch Dlink qui met a jour l'IP directement. Sauf que je suis obliger de lui assigné l'IP WAN , ce qui me fout en l'air ma connexion redondante (ce qui est  :fou:  TOTALEMENT inacceptable, y a pas moyen que je puisse pas streamer mes MP3 au boulot  :cry:  ).
 
Donc j'ai chercher a voir si No-IP fournissait qqch. Et bien oui, heureusement :love: . Ils ont un serveur qui permet de mettre a jour l'IP a partir d'une requete HTTP GET. Mais je doit obtenir l'IP qui est assigné a mon interface de secoure et la transmettre dans l'URL.
 
En me lancant dans C#, j'ai vite rencontrer des problemes pour obtenir l'IP. Je peut utiliser le nom DNS local (qui s'applique a la machine) et j'obtient toutes les IPs actives, ce qui m'est totalement inutile puisque 2 de ses IP sont dynamiques, donc impossible a discriminer. J'ai chercher, et trouver, comment obtenir une interface précise en faisant
 

Code :
  1. using System.Net.NetworkInformation;
  2. ....
  3. NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
  4. NetworkInterface wifi;
  5.        
  6. foreach(NetworkInterface n in interfaces)
  7. {
  8.      if (n.Name == "l'interface désirée" )
  9.      {
  10.            wifi = n;
  11.             break;
  12.       }
  13. }


 
Sauf que de cette maniere, je ne peux pas retrouver l'IP assigné à la carte. L'objet wifi expose des méthodes pour obtenir certains parametres, mais pas l'IP (ou alors j'ai pas compris un truc).
 
J'ai également trouver des infos concernant WMI, mais je ne connais absolument pas le langage de requete (mes premiers essais avec WMICodeCreator n'ont pas été fructueux). Et ca me parait un peu abuser de devoir comprendre et apprendre WMI juste pour une IP. Il y a une alternative, c'est de ne pas specifier l'IP dans l'URL de mise a jour, mais alors il faut que je definisse par quelle interface la requete HTTP doit etre transmise. Ce qui me parait nettement plus compliquer, et de plus pas du tout redondant (vu que l'interface est fixée, je ne bénéficie pas de la passerelle dynamique, donc limite mais acceptable).
 
Je me dit qu'il y a surement des personnes qui seront capable de m'aider a trouver comment la récuperer. Et qui seront pt-etre interessé par la problématique plus général de mon cas (meme si ce n'est pas de la prog).
 
Merci d'avance a tous ceux qui prendront le temps de me lire.


Message édité par uinetpropane le 22-07-2010 à 00:54:23
mood
Publicité
Posté le 22-07-2010 à 00:41:16  profilanswer
 

n°2011046
uinetpropa​ne
Posté le 22-07-2010 à 15:35:44  profilanswer
 

lo, je vais passser pour un newb.
 
J'avais relever la fonction GetIPProperties et la propriété UnicastAddresses, mais j'ai pas compris que UnicastAddresses c'etait les IP locals. J'ai été piégé par la ressemblance avec MulticastAddresses et AnycastAddresses. C'est la premiere fois que je vois le terme "UnicastAddresses" pour parler de l'addresse IP (ou des addreses IPs) local.
 
Merci pour ton aide


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  C# obtenir l'IP d'une interface spécifique par son nom "window"

 

Sujets relatifs
[C] Multi-client/Serveur que choisir ?programmation réseau C++ multiplateforme
Obtenir la date de la veille depuis une datescript pour se loguer à un logiciel en fonction de l'adresse IP ou MAC
look ou bibliothéque d'interface builder c++boucle pour ouvrir plusieurs fichiers en C
Relais TCP-IP PYTHONLa video avec JAVA/JVM c'est possible?
perl Net::Telnet : comment choisir l'interface ?[ASP .Net / C#] Gridview : Personnalistation du Pager
Plus de sujets relatifs à : C# obtenir l'IP d'une interface spécifique par son nom "window"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR