2009-02-18 4 views
1

Existe-t-il un .NET équivalent à la fonction winsock GetNameInfoW() avec l'indicateurdéfini? Comme la documentation MSDN pour GetNameInfoW expliquer:Obtenir le nom d'hôte non qualifié dans .NET

Définition des résultats de drapeau NI_NOFQDN dans les hôtes locaux ayant seulement leur nom distinctif relatif (RDN) retourné dans le paramètre pNodeBuffer.

La chose la plus proche que je peux trouver est System.Net.Dns.GetHostEntry(), qui retourne un IPHostEntry mais dont HostName est le entièrement nom de domaine de l'hôte aux qualifiés. Je veux juste le nom d'hôte non qualifié.

Par exemple, si l'adresse IP « xxxx » résout le FQDN « foohost.company.domain.com », je peux obtenir « foohost » de GetNameInfoW() en fournissant NI_NOFQDN, mais il ne semble pas être un équivalent en .NET. Je ne suis pas sûr si GetNameInfoW() fait NetBIOS ou LDAP ou quelque chose d'autre sous les couvertures. Des réflexions sur la façon de faire la même chose dans .NET?

Répondre

1

Essayez-vous d'obtenir le nom de l'ordinateur ou le nom DNS de l'adresse IP de l'ordinateur (parfois différent). Si vous voulez vraiment utiliser GetNameInfoW(), vous pouvez toujours utiliser Pinvoke depuis .NET.

Edit: Cela pourrait être un hack, mais pourriez-vous utiliser le résultat de System.Net.Dns.GetHostEntry() et juste faire un string.split (« ») et de prendre l'index 0 comme nom non qualifié ?

+0

Je pense que ce que GetNameInfoW() fournit est le nom de l'ordinateur (mais je pensais aussi qu'il faisait partie d'un nom complet pour le DNS.) J'appelle GetNameInfoW() de .NET, et je préférerais ne pas à (pour une compatibilité IPv6 plus simple entre autres). – Jason

1

Si l'ordinateur dispose de plusieurs adresses IP, il peut également avoir plusieurs noms d'hôte (qualifié ou non dans ce contexte). Dans le passé, si j'avais besoin du "nom d'ordinateur", j'ai utilisé "Environment.MachineName", ce qui renvoie techniquement le nom NetBIOS de la boîte, mais au moins cela ne dépend pas de la configuration IP.

Questions connexes