1

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

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

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

例如,如果 IP 地址“xxxx”解析为 FQDN“foohost.company.domain.com”,我可以GetNameInfoW()通过提供来获取“foohost” NI_NOFQDN,但在 .NET 中似乎没有等效项。我不确定是否GetNameInfoW()在做 NetBIOS 或 LDAP 或其他东西。关于如何在 .NET 中执行相同操作的任何想法?

4

2 回答 2

1

Are you trying to get the computer's name, or the DNS name for the computers IP (sometimes different). If you really wanted to use GetNameInfoW() you could always just use Pinvoke from .NET.

Edit: This might be a hack, but could you use the result from System.Net.Dns.GetHostEntry() and just do a string.Split('.') and take index 0 as the unqualified name?

于 2009-02-18T16:29:49.817 回答
1

如果计算机有多个 IP 地址,它也可以有多个主机名(在这种情况下完全限定与否无关紧要)。

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

于 2009-02-19T07:36:26.470 回答