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

ASP.NET Discussion :

Problème de conversion adresse IP en HostName


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Par défaut Problème de conversion adresse IP en HostName
    Bonjour,

    J'ai un petit code qui me converti les adresses IP en nom de machine.

    C'est un réseau d'entreprise avec domaine et serveurs DNS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Function NomDuPoste(ByVal AdresseIP As String) As String
            Dim Retour As String = " "
            Try
                Dim NomPoste As IPHostEntry = Dns.GetHostEntry(AdresseIP)
                If NomPoste.HostName <> AdresseIP Then
                    Retour = NomPoste.HostName
                Else
                    Retour = " "
                End If
            Catch ex As Exception     
            End Try
            Return Retour
    End Function
    C'est la fonction standard et basic de la FAQ VB.net

    Le souci c'est que le HostName retourné provient des Wins et non des DNS.
    Ma console DHCP m'affiche le bon nom de poste associé à l'adresse IP
    Le débug de mon programme me donne un nom super bizarre.

    J'ai vu avec les spécialistes serveurs et ils m'ont donné cette piste des Wins.

    Quelqu'un aurait-il une idée sur la source et/ou la résolution de ce problème?

    Est-il possible d'obliger VB à utiliser les serveurs DNS plutôt que les Wins?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Par défaut
    Re,

    J'ai trouvé un début de solution.

    Il y a un problème avec la fonction Dns.GetHostEntry
    http://www.tech-archive.net/Archive/.../msg00343.html
    http://connect.microsoft.com/VisualS...edbackID=97815

    Donc j'ai résolu le souci des noms machines sous formes d'adresse IP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Function NomDuPoste(ByVal AdresseIP As String) As String
            Dim Retour As String = " "
            Try
                Dim NomPoste As IPHostEntry = Dns.GetHostByAddress(AdresseIP)
                Retour = NomPoste.HostName
            Catch ex As Exception 'Si erreur enregistrement des infos dans un fichier
     
            End Try
            Return Retour
        End Function
    Petit souci persistant, j'ai toujours des adresses IP différentes qui sont associés au même PC.

    ex:
    192.168.1.20 PC_01
    192.168.1.30 PC_01

    Quelqu'un aurait une idée ou une piste que je pourrai explorer?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Par défaut
    Voici la réponse: Merci Billou

    Cette anomalie (deux IP différentes pour un même nom d'hôte) provient des DNS.

    Les DNS travaillent avec deux tables:
    - Nom de poste vers Adresse IP
    - Adresse IP vers Nom de poste

    Lors d'un changement d'IP d'un poste, la première table (Hôte -> IP) est mise à jour correctement dans la plupart des cas.

    Mais la seconde table (IP -> Hôte) est apparemment un peu moins fiable et il arrive la donnée Ancienne @ip -> Hôte ne soit pas supprimé

    Conséquence dans le sens IP -> Hôte, on se retrouve avec deux adresses IP pour un même nom de poste.

    Pour contourner ce problème, je vais systèmatiquement faire les conversion dans les deux sens.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim NomPoste As IPHostEntry = Dns.GetHostEntry(AdresseIP)
    Suivi de la fonction inverse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim ValideIP As IPHostEntry = Dns.GetHostEntry(NomPoste)
    Si l'adresse IP de retour (ValideIP) est identique à l'adresse IP d'origine (AdresseIP) alors le nom du poste (NomPoste) est correct.

    J'espère que cette solution servira à d'autre.
    Bye.

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    bonjour

    je cherche un code pour récuperer mon adresse ip ( Web)

    Merci

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Pour l'adresse LAN du PC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    using System.Net;
     
    //To get the local IP address 
    string sHostName = Dns.GetHostName (); 
    IPHostEntry ipE = Dns.GetHostByName (sHostName); 
    IPAddress [] IpA = ipE.AddressList; 
    for (int i = 0; i < IpA.Length; i++) 
    { 
        Console.WriteLine ("IP Address {0}: {1} ", i, IpA[i].ToString ()); 
    }

  6. #6
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Pour l'adresse WAN du routeur:
    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
    public static IPAddress GetExternalIp()
    {
      string whatIsMyIp = "http://whatismyip.com";
      string getIpRegex = @"(?<=<TITLE>.*)\d*\.\d*\.\d*\.\d*(?=</TITLE>)";
      WebClient wc = new WebClient();
      UTF8Encoding utf8 = new UTF8Encoding();
      string requestHtml = "";
      try { requestHtml = utf8.GetString(wc.DownloadData(whatIsMyIp)); }
      catch (WebException we)  { messageBox.show(we.ToString()); }
      Regex r = new Regex(getIpRegex);
      Match m = r.Match(requestHtml);
      IPAddress externalIp = null;
      if (m.Success) externalIp = IPAddress.Parse(m.Value);
      return externalIp;
    }

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

Discussions similaires

  1. problème de conversion de dimension dans BUSINESS OBJECT
    Par greatmaster1971 dans le forum Deski
    Réponses: 4
    Dernier message: 28/04/2014, 13h15
  2. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  3. Problème de conversion 3DS->.X
    Par JBernn dans le forum DirectX
    Réponses: 5
    Dernier message: 08/04/2004, 19h08
  4. Problème de conversion unicode
    Par djmalo dans le forum C
    Réponses: 5
    Dernier message: 09/03/2004, 11h48
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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