在.NET中获取不合格的主机名

时间:2009-02-18 15:51:04

标签: .net .net-2.0 dns fqdn

是否存在与winsock函数GetNameInfoW()等效且设置了NI_NOFQDN标志的.NET?正如GetNameInfoW的MSDN文档解释:

  

设置NI_NOFQDN标志会导致本地主机仅在pNodeBuffer参数中返回其相对可分辨名称(RDN)。

我能找到的最接近的是System.Net.Dns.GetHostEntry(),它返回IPHostEntry但其HostName是主机的完全限定域名。我只想要不合格的主机名。

例如,如果IP地址“xxxx”解析为FQDN“foohost.company.domain.com”,我可以通过提供GetNameInfoW()NI_NOFQDN获取“foohost”,但是没有似乎在.NET中是等价的。我不确定GetNameInfoW()是否正在使用NetBIOS或LDAP或其他内容。关于如何在.NET中做同样事情的任何想法?

2 个答案:

答案 0 :(得分:1)

您是否尝试获取计算机的名称或计算机IP的DNS名称(有时不同)。如果你真的想使用GetNameInfoW(),你可以随时使用.NET中的Pinvoke。

编辑:这可能是一个黑客,但你可以使用System.Net.Dns.GetHostEntry()的结果,只做一个string.Split('。')并取索引0作为不合格的名字?

答案 1 :(得分:1)

如果计算机有多个IP地址,它也可以有多个主机名(在这种情况下完全合格或不重要)。

如果我需要“计算机名称”,我过去使用过“Environment.MachineName”,它在技术上会返回该框的NetBIOS名称,但至少不依赖于IP配置。