我有一个应用程序,它使用 getaddrinfo() 将 Windows 工作组中 PC 的主机名转换为 LAN 上该 PC 的 IPV4 地址。(注意,我不是指获取运行代码的 PC 的地址,我是指 LAN 上另一台 PC 的地址!)这已经在现场和实验室中工作了很长一段时间,但是现在我有一台运行异常的 Windows 7(32 位)PC。这台 PC 的主机名是“elbow”。
我在http://msdn.microsoft.com/en-us/library/windows/desktop/ms738520%28v=vs.85%29.aspx编译了 Microsoft 为 getaddrinfo() 提供的示例代码
当我在 LAN 上的任何 PC 上运行此示例代码并将“elbow”指定为主机名时,getaddrinfo() 返回环回地址 127.0.0.1 而不是正确的地址 (192.168.1.110)。但是,如果我指定任何其他主机名 getaddrinfo() 将返回正确的地址!
在过去的某个时间点,“肘部”没有表现出这种行为,因此很明显,那台 PC 的某些东西已经改变导致这种行为。我已尝试将 PC 磁盘映像恢复到我认为不会导致此行为的程度,但这并没有改变。PC 是有线连接还是无线连接到 LAN 也没有区别。为 LAN 上的所有 PC 启用 DHCP。即使所有 PC、路由器和交换机完全断电,这种行为也会持续存在。