IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Problème modification IP carte réseau


Sujet :

Dotnet

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 21
    Points : 10
    Points
    10
    Par défaut Problème modification IP carte réseau
    Bonjour,

    Je suis en train de développer un logiciel, capable de lire une adresse IP d'un port ethernet de la carte réseau et de pouvoir la modifier.

    Ma carte possède 2 port ethernet.

    J'arrive très bien à entrer dans le paramétrage du port grâce au code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
                foreach (NetworkInterface adapter in nics)
                {
                    //(Filtre de port grâce à adapter.Name)Methode afficahe de l'adresse IP ???
                }
    Mais je n'arrive pas afficher l'adresse IP.

    Ceci est mon premier problème, le second est comment faire pour modifier cette adresse IP??

    J'ai tenté via "ManagementObject" mais je n'arrive pas a faire de filtre sur le nom du port (comme dans le précédent avec adapter.Name), car avec "ManagementObject" je n'arrive seulement a récupérer seulement le nom de la carte (ManagementObject mo["Caption"]) et nn le nom du port ethernet.

    Comment faire ?? Et surtout COMMENT MODIFIER L'ADRESSE IP

    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Points : 746
    Points
    746
    Par défaut Adresse IP
    Bonjour,

    Une approche assez sommaire :

    Imaginons que l'on souhaite travailler sur l'interface stockée en index 0 de ton tableau nics[]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    NetworkInterface nic = nics[0];
     
    IPAddress ipv4; 
    IPAddress ipv4mask;
    IPAddress ipv6;
     
                foreach(UnicastIPAddressInformation ip in nic.GetIPProperties().UnicastAddresses)
                {
                    switch(ip.Address.AddressFamily)
                    {
                        case System.Net.Sockets.AddressFamily.InterNetwork:
                            if (null == ipv4) {
                                ipv4 = ip.Address;
                                ipv4mask = ip.IPv4Mask;
                            }
                            break;
                        case System.Net.Sockets.AddressFamily.InterNetworkV6:
                            if (null == ipv6) {
                                ipv6 = ip.Address;
                            }
                            break;
                    }
                }
     
    string sIpv4 = ipv4.ToString();
    Cette boucle récupère
    - La première adresse ipv4 trouvée (si elle existe) avec son masque
    - La première ipv6 trouvée.

    Tu peux également voir du coté de la classe Win32_NetworkAdapterConfiguration.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Très bien merci ça fonctionne parfaitement pour la lecture,

    Mais par contre pour l'écriture, je n'ai toujours pas de solution,

    Hormis un essai mais peu concluant car, c'est la modification de la carte réseau, mais moi ma carte à 2 ports, donc je voudrai que au lieu de filtrer par nom de carte réseau, de filtrer par nom de port, comme dans la lecture.

    Code pour la lecture avec filtre sur le nom du port. (exemple : nameNetwork = "Nom du port (Connexion au réseau local)" )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    private void GetIp(string nameNetwork)
            {
                int count;
     
                System.Net.NetworkInformation.NetworkInterface[] nics = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
     
                for (count = 0; count < nics.Length; count++)
                {
                    if (nics[count].Name.Contains(nameNetwork))
                        break;
                }
     
                System.Net.NetworkInformation.NetworkInterface nic = nics[count];
     
                foreach (System.Net.NetworkInformation.UnicastIPAddressInformation ip in nic.GetIPProperties().UnicastAddresses)
                {
                    switch (ip.Address.AddressFamily)
                    {
                        case System.Net.Sockets.AddressFamily.InterNetwork:
     
                            txtbIPI400.Text = ip.Address.ToString();
                            txtbMaskI400.Text = ip.IPv4Mask.ToString();
                            break;
                    }
                }
            }
    Code pour l'écriture mais avec filtre sur le nom de la carte et NON SUR LE NOM DU PORT

    (exemple : nicName = "nom de la carte")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    private void SetIP(string nicName, string IPAddress, string SubnetMask, string Gateway)
            {
                ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection objMOC = objMC.GetInstances();
     
                foreach (ManagementObject objMO in objMOC)
                {
                    if (!(bool)objMO["IPEnabled"])
                        continue;
     
                    if (objMO["Caption"].ToString().Contains(nicName))
                    {
                    try
                    {
                        ManagementBaseObject objNewIP = null;
                        ManagementBaseObject objSetIP = null;
                        ManagementBaseObject objNewGate = null;
     
                        objNewIP = objMO.GetMethodParameters("EnableStatic");
                        objNewGate = objMO.GetMethodParameters("SetGateways");
     
                        //Set DefaultGateway
                        objNewGate["DefaultIPGateway"] = new string[] { Gateway };
                        objNewGate["GatewayCostMetric"] = new int[] { 1 };
     
                        //Set IPAddress and Subnet Mask
                        objNewIP["IPAddress"] = new string[] { IPAddress };
                        objNewIP["SubnetMask"] = new string[] { SubnetMask };
     
                        objSetIP = objMO.InvokeMethod("EnableStatic", objNewIP, null);
                        objSetIP = objMO.InvokeMethod("SetGateways", objNewGate, null);
     
                        Console.WriteLine("Updated IPAddress, SubnetMask and Default Gateway!");
     
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Unable to Set IP : " + ex.Message);
                    }
                }
                }
            }
    Quelqu'un pourrait me venir en aide???

    Merci d'avance

Discussions similaires

  1. probléme avec la carte réseau ethernet
    Par ghost_23 dans le forum Matériel
    Réponses: 6
    Dernier message: 28/08/2009, 11h25
  2. problème périphérique et carte réseau
    Par Msysteme dans le forum Windows
    Réponses: 0
    Dernier message: 25/05/2009, 19h20
  3. Réponses: 3
    Dernier message: 27/02/2008, 10h33
  4. [pilotes] Problème avec une carte réseau
    Par Aitone dans le forum Windows 2000/Me/98/95
    Réponses: 4
    Dernier message: 13/12/2006, 18h23
  5. Problème simple de carte réseau
    Par Bayard dans le forum Matériel
    Réponses: 1
    Dernier message: 25/09/2006, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo