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

Réseau .NET Discussion :

Résolution de nom


Sujet :

Réseau .NET

  1. #1
    Membre actif
    Résolution de nom
    Bonjour à tous et à toutes,

    J'ai un petit souci que je ne parviens pas à régler, sûrement à cause de mes lacunes en matière de réseau.

    Jusqu'ici, je communiquais avec un serveur de mon réseau via TCP/IP en l'attaquant directement sur son IP.

    Ce serveur sera probablement amené à être renouvelé alors que l'application sera en production. Par conséquent, nous allons attaquer ce serveur via son nom.

    Pour ce faire, j'ai recours aux objets du framework et notamment aux méthodes dans System.Net.Dns

    Si je tente de récupérer l'IP d'une machine lambda sur le réseau via son nom, ça fonctionne sans souci.

    Par contre, pour le serveur, la résolution ne fonctionne pas.

    Au niveau de la config, ce serveur a un masque de sous réseau différent des autres machines. Je suppose que c'est à cela que je dois la non résolution du nom.

    Ma question est : comment y remédier sachant que, je le répète, si je tente d'accéder au serveur via son IP (pour récupérer son nom par exemple), ça fonctionne sans souci.

    D'avance, merci pour votre aide.

    Bonne journée à tous.

  2. #2
    Membre expérimenté
    Salut,

    As-tu essayer de jouer avec le fichier host pour ajouter ces noms de serveurs ?

    Ce n'est peut être ce que tu veux éviter, mais généralement c'est plus simple.

  3. #3
    Membre actif
    Hello,

    Merci pour ta contribution mais en effet, il n'est pas souhaitable de modifier le fichier host car il faudrait le faire sur l'ensemble des machines clientes dès que le serveur changera d'ip.
    C'est effectivement ce que je souhaite éviter.

  4. #4
    Expert éminent
    Essaye ceci:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        string IPV4 = GetHostIP(Net.Sockets.AddressFamily.InterNetwork  ,"MyServer") ;
        string IPV6 = GetHostIP(Net.Sockets.AddressFamily.InterNetworkV6,"MyServer") ;
     
        private string GetHostIP(System.Net.Sockets.AddressFamily Af, string HostName) 
        {
            System.Net.IPHostEntry TheHostEntry = System.Net.Dns.GetHostEntry(HostName) ; 
            if (TheHostEntry!=null) for (each System.Net.IPAddress Ip in TheHostEntry.AddressList)
                if (Ip.AddressFamily = Af) return Ip.ToString() ;
            return "" ;
        }
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre actif
    Bonjour,

    Me voilà de retour au taf.

    Merci également pour ta participation mais c'est bien ce que je faisais pour récupérer l'ip.

    Si j'utilise ce code sur la machine de mon voisin, pas de souci. Par contre, si je mets le nom du serveur (qui n'a pas la même passerelle), il me dit tout simplement qu'il ne trouve pas l'hôte.

    Pourtant, si j'utilise System.Net.Dns.GetHostByAddress(IpDeMonServeur), il me renvoie bien le nom du serveur visé...

    Je n'ai toujours pas trouvé de solution.

    D'avance merci.

  6. #6
    Expert éminent
    Essaie ceci:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    string IpAddr = Dns.GetHostAddresses(HostName)[0].ToString();
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Membre actif
    Hello,

    Merci pour ton idée mais ça reste le même code.

    Par conséquent, j'ai toujours une exception sur le GetHostAddresses, qui me dit "Hôte inconnu".

    Je commence à désespérer. Moi qui pensais trouver rapidement une solution, voilà bientôt une semaine que je bloque là-dessus...

    Merci d'avance pour vos propositions.

  8. #8
    Expert éminent
    Une autre piste via NetworkInterface.GetAllNetworkInterfaces() :
    http://david-homer.blogspot.fr/2014/...stname-or.html
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson