【问题标题】:Dns.GetHostEntry returns wrong IP addresses on Windows MobileDns.GetHostEntry 在 Windows Mobile 上返回错误的 IP 地址
【发布时间】:2010-11-14 17:29:47
【问题描述】:

这是在通过 USB 连接到我的计算机的手持设备上,使用 Compact Framework:

当我调用 Dns.GetHostEntry("") 或 Dns.GetHostEntry(IPAddress.Loopback) 来获取手持设备的 IPAddresses 时,我得到了主机的 IPAddresses。但是当我从手持设备向我的计算机发送数据包时,它们来自不同的地址。

有没有办法阻止它这样做?直接通过 P/Invoke 调用 DLL 会修复它吗?

手持设备未通过 WiFi 或蓝牙连接。唯一的连接是通过 USB。

【问题讨论】:

    标签: c# compact-framework dns


    【解决方案1】:

    当您调用 Dns.GetHostEntry("") 时,我认为您会在 127.0.0.1 的 IPHostEntry.AddressList 中返回一个条目(事实上,这是快速测试显示的内容)。 Dns.GetHostEntry(IPAddress.Loopback) 返回两个条目:127.0.0.1 和 ::1。

    既不返回主机 PC 的 IP 地址,也不应返回设备的 IP 地址。如果您想要设备的 IP 地址,请使用以下内容:

    IPHostEntry hostent = Dns.GetHostEntry(Dns.GetHostName());
    
    foreach (var addr in hostent.AddressList)
    {
        Debug.WriteLine(addr.ToString());
    }
    

    【讨论】:

    • 你是对的。 Dns.GetHostEntry(Dns.GetHostName()) 返回正确信息,而 Dns.GetHostEntry("") 返回错误信息。即使 MSDN 信息说传入一个空字符串也会为您提供有关本地主机的 IP 地址信息。另外,您提到了紧凑框架中不可用的 Dns.GetHostAddress。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2013-11-24
    • 2011-12-05
    • 2010-09-14
    • 2011-06-29
    • 1970-01-01
    相关资源
    最近更新 更多