【发布时间】:2014-08-28 06:15:04
【问题描述】:
我正在编写一个 C++ 应用程序,它接收 LAN 计算机名称作为来自外部世界的输入(例如 \\PCNAME123,我可以通过在 Windows 运行提示符或 IE 地址栏中键入来访问它)并且需要获取一些基于该名称的数据,例如通过调用 gethostbyname() 函数。
问题是我需要一个完全限定的名称(例如 PCNAME123.domainname.net),我认为是所谓的(我是 Winsock 和一般网络编程的新手,所以我可能没有正确的术语)。我已经测试过了,gethostbyname() 可以正常使用,但不能使用“PCNAME123”或“\\PCNAME123”。
我如何获得该网络计算机的完全限定名称(请注意,它不是针对本地主机,而是针对本地网络上的其他计算机)?
【问题讨论】:
-
除非您有其他信息(例如“它是 AD 域的成员”或“它与我在同一个 DNS 域中”),否则在逻辑上不可能将非限定名称转换为一个合格的,原因很简单,两台(或更多)计算机可以有相同的不合格名称,那么您如何判断选择哪一台?
-
与 Internet Explorer 或运行提示符一样吗?当给出“模棱两可”的非限定名称时,我可以接受运行提示或 IE 的相同行为。
-
我的错误,我错过了机器在本地网络上的限定符。这使事情变得更容易,首先,如果有人试图设置重复名称,机器可能会抱怨。 :-)