【发布时间】:2012-03-21 15:24:08
【问题描述】:
我有一个应用程序,它使用 getaddrinfo() 将 Windows 工作组中 PC 的主机名转换为 LAN 上该 PC 的 IPV4 地址。 (注意,我不是指获取运行代码的 PC 的地址,我是指 LAN 上另一台 PC 的地址!)这已经在现场和实验室中工作了很长一段时间,但是现在我有一台运行异常的 Windows 7(32 位)PC。这台电脑的主机名是“elbow”。
我在http://msdn.microsoft.com/en-us/library/windows/desktop/ms738520%28v=vs.85%29.aspx编译了微软为getaddrinfo()提供的示例代码
当我在 LAN 上的任何 PC 上运行此示例代码并将“elbow”指定为主机名时,getaddrinfo() 返回环回地址 127.0.0.1 而不是正确的地址 (192.168.1.110)。但是,如果我指定任何其他主机名 getaddrinfo() 将返回正确的地址!
在过去的某个时间点,“肘部”没有表现出这种行为,因此很明显,关于该 PC 的某些东西发生了变化,导致了这种行为。我已尝试将 PC 磁盘映像恢复到我认为不会导致此行为的程度,但这并没有改变。 PC 是有线连接还是无线连接到 LAN 也没有区别。为 LAN 上的所有 PC 启用 DHCP。即使所有 PC、路由器和交换机完全断电,这种行为也会持续存在。
【问题讨论】:
-
我的错误答案不见了。我看到你在这个问题上没有任何其他活动;这真的是一个谜。祝你好运!
-
太奇怪了!而且它是单向的——奇怪的 PC 可以毫无问题地为所有其他 PC 获取正确的 IP。好像有一些安全设置使 IP “不可见”。我之前搜索过这样的设置,但你知道,我想我会再看看......
标签: windows loopback getaddrinfo