是否存在与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中做同样事情的任何想法?
答案 0 :(得分:1)
您是否尝试获取计算机的名称或计算机IP的DNS名称(有时不同)。如果你真的想使用GetNameInfoW(),你可以随时使用.NET中的Pinvoke。
编辑:这可能是一个黑客,但你可以使用System.Net.Dns.GetHostEntry()的结果,只做一个string.Split('。')并取索引0作为不合格的名字?
答案 1 :(得分:1)
如果计算机有多个IP地址,它也可以有多个主机名(在这种情况下完全合格或不重要)。
如果我需要“计算机名称”,我过去使用过“Environment.MachineName”,它在技术上会返回该框的NetBIOS名称,但至少不依赖于IP配置。