通过 ActiveSync 连接时从 windows mobile 获取主机 pc 的 IP 地址

Posted

技术标签:

【中文标题】通过 ActiveSync 连接时从 windows mobile 获取主机 pc 的 IP 地址【英文标题】:Get ip address of host pc from windows mobile when connected via ActiveSync 【发布时间】:2010-10-02 11:53:09 【问题描述】:

我有一个在 Windows Mobile 上运行的 .Net Compact 应用程序,我希望通过 ActiveSync 连接时能够连接到运行在“主机”机器(即插入 PDA 的桌面)上的 Web 服务,但我不知道主机的IP地址。如何在 PDA 上以编程方式查找台式机的 ip?

【问题讨论】:

【参考方案1】:

我找到了一篇知识库文章How To Retrieve the IP Address of the Remote PPP Peer,它使用了主机“PPP_Peer”。所以我尝试了:

Dns.GetHostEntry("PPP_Peer").AddressList[0]

这确实给了我正在寻找的东西(我目前使用的 PC 上的 169.254.2.2)。

【讨论】:

【参考方案2】:

获取地址与连接到任何其他网络适配器时没有什么不同(现在 ActiveSync 通常在 RNDIS 上运行)。

Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];

也就是说,ActiveSync 总是创建一个本地网络,因此设备总是会获得 192.168.55.101(主机 PC 是 192.168.55.100)。理论上它可能会有所不同,但在我与 CE 合作的十年中,我从未见过它提供任何其他地址(除了在 Vista 的 WMDC 下,它倾向于使用不同但非常可预测的寻址方案) .

编辑:看来您不是在尝试获取自己的 IP,而是在连接的 PC 上。 ActiveSync 不是一个成熟的网络连接。它会过滤某些数据包类型并且您无法获得名称解析,因此您无法通过对 PC 名称执行 Dns.Resolve 从设备代码中获取 PC 的 IP 地址。您必须直接向设备应用提供 IP。

【讨论】:

Using Dns.GetHostEntry(Dns.GetHostName()).AddressList[0] 似乎给出了设备的 ip:在我的情况下为 169.254.2.1(与 Vista x64 同步中心连接)。桌面上的 ipconfig 显示使用 169.254.2.2 的 Windows Mobile 远程适配器,这是我想找出连接到 web 服务的内容 WMDC IP 地址 (2.2) 是 PC RNDIS 适配器的地址。设备地址 (2.1) 是设备 RNDIS 适配器的地址,因此这两个都是预期的。 谢谢,我希望我能够计算出 IP 或依靠固定 ip - 但看起来我将不得不找到另一种方法来告诉设备哪个 web 服务连接到。

以上是关于通过 ActiveSync 连接时从 windows mobile 获取主机 pc 的 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

ActiveSync与模拟器连接

ActiveSync 在 Win7(32位) 与 WinCE7 之间使用出现的问题

ActiveSync不能连接开发板的问题

vs2005+WinCE模拟器+ActiveSync调试WinCE程序

向 ActiveSync 注册 RAPI 程序?

Python Exchange ActiveSync 库