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

C# Discussion :

connaitre son ip local


Sujet :

C#

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut connaitre son ip local
    bonjour j'aimerai connaitre mon ip local.

    biensur je viens de regarder la page FAQ de c# et je suis tombé sur ce bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
          // Nom de la machine
          String NomMachine = Dns.GetHostName();
     
          // Récupération de la liste des IP de la machine
          IPHostEntry InfoIps = Dns.GetHostEntry(NomMachine);
          IPAddress[] MesIp = InfoIps.AddressList;
     
          foreach (IPAddress CurrentIp in MesIp)
              Console.WriteLine("Ip : {0}", CurrentIp.ToString());
    Moi je veux juste récupérer l'ip local de la machine pourquoi une liste ?

    Merci pour vos messages qui m'aide à apprendre.

  2. #2
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Re salut...
    Ben tu peux avoir plusieurs interfaces réseau sur ton pc....
    Le problème est de savoir laquelle tu veux utiliser...

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    ah bah... comment dire... celle par défaut exemple : 192.168.56.1

    mais bon c'est une application qui va être sur ma clé usb en faite donc j'ignore par avance le résultat, c'est pour de la maintenance.

    Après ipv4 ou ipv6 aucune idée.

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    j'ai trouvé cette méthode sur le forum:

    elle me retourne: 192.168.0.4

    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
     
    public string LocalIPAddress()
    {
    IPHostEntry host;
    string localIP = "";
    host = Dns.GetHostEntry(Dns.GetHostName());
    foreach (IPAddress ip in host.AddressList)
    {
    if (ip.AddressFamily.ToString() == "InterNetwork")
    {
    localIP = ip.ToString();
    }
    }
    return localIP;
    }
     
    est-ce correct ?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Comme l'a dit ppphil, tu peux très bien avoir plusieurs interfaces réseaux, il est donc impossible de présupposer laquelle utiliser.

  6. #6
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Comme dit, impossible de savoir quel carte tu veux. Il faut définir certains critères (connecté à internet, ...). Et même, il peut y en avoir plusieurs.

    Avec ce code, tu auras la liste des IP en format IPV4 des cartes actives (qui sont connectés).Remplacer AddressFamily.InterNetwork par AddressFamily.InterNetworkV6 pour IPV6.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    using System.Net.NetworkInformation;
    using System.Net.Sockets;
    ...
    var adapters = NetworkInterface.GetAllNetworkInterfaces().Where(d => d.OperationalStatus == OperationalStatus.Up).Select(e => e.GetIPProperties());
    var ip = adapters.SelectMany(d => d.UnicastAddresses.Where(e => e.Address.AddressFamily == AddressFamily.InterNetwork).Select(e => e.Address));
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    déja merci pour vos messages!

    d'accord, alors comment je peux avoir le nom de l'interface avec son ip a côté alors ? (en reprenant le code de la FAQ c#)

    du genre:

    Nom-Interface1 : ip
    Nom-Interface2 : ip
    Nom-Interface3 : ip
    Nom-Interface4 : ip

  8. #8
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Essaye avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      var TheList = from adapter in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces().Where(d => d.OperationalStatus == System.Net.NetworkInformation.OperationalStatus.Up)
         select new
         {
          Name = adapter.Name,
          IP = adapter.GetIPProperties().UnicastAddresses.First(d => d.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).Address
         };
    Ca va te donner un IEnumerable avec le nom et l'IP des cartes actives.
    (Je pars du principe que chaque carte active à une IP IPV4.)
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  9. #9
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    merci pour ce code, mais la c'est de plus en plus dur pour moi... je crois que je vais abandonner l'affichage lol

  10. #10
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Il est top ton code, EquinoxeDotNet.
    Ceci dit, noobyyy semble être débutant.
    Et le lambda peut sembler quelque peu obscur...
    Faut pas te décourager noobyyy. Reprends ton code de départ. Tu devra de toutes manières faire un choix sur la carte à utiliser...

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    j'ai l'impression que le code ci-dessus n'a pas la syntaxe d'un code en c# lol du coup je suis perdu moi....

    je dois me renseigner sur ipv6, mais prochainement comment on va détecter si la personne a ipv4 ou ipv6, je voulais juste afficher l'ip réseau les autres interfaces j'ignore.

    Ou alors pour faire simple faudrait que je mette le résultat du code plus haut dans un label ou autre.

  12. #12
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Et ceci ne te conviens pas ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());
     
          foreach (IPAddress ipa in ips)
          {
            if (ipa.AddressFamily == AddressFamily.InterNetwork)
            {
              label1.Text += ipa.ToString() + Environment.NewLine;
            }

  13. #13
    Membre régulier
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Points : 115
    Points
    115
    Par défaut
    Pour comprendre la syntaxe du code avec le Where(...=>...) il te faut regarder du cotés de Linq to Object et des expressions lambda.

    C'est très pratique quand tu connais : )

  14. #14
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    ah oui ppphil c'est pas mal ! c'est possible d'avoir le nom de l'interface à côté ? comme sa on sait quelle interface correspond à telle IP.


    Merci pour l'info (LINQ)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaitre son ip public
    Par xlurp dans le forum Réseau
    Réponses: 5
    Dernier message: 03/10/2008, 10h55
  2. CButton, connaitre son état (enable ou disable)
    Par mr.saucisse dans le forum MFC
    Réponses: 5
    Dernier message: 27/02/2006, 18h01
  3. connaitre son adresse IP
    Par Tex-Twil dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 14/01/2006, 16h04
  4. Connaître son addresse IP
    Par LE NEINDRE dans le forum Modules
    Réponses: 3
    Dernier message: 27/09/2005, 10h35
  5. Connaitre son IP
    Par kaiser2003 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 04/08/2004, 23h38

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