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

Windows mobile 通过ActiveSync连接时从windows mobile获取主机pc的ip地址,windows-mobile,compact-framework,activesync,Windows Mobile,Compact Framework,Activesync,我有一个运行在Windows Mobile上的.Net Compact应用程序,我希望通过ActiveSync连接时能够连接到运行在“主机”计算机(即PDA插入的桌面)上的Web服务,但我不知道主机的ip地址。如何在PDA上以程序方式查找桌面PC的ip?获取地址与连接到任何其他网络适配器时没有什么不同(现在通常ActiveSync通过RNDIS运行) 也就是说,ActiveSync总是创建一个本地网络,因此设备总是会获得192.168.55.101(主机PC为192.168.55.100)。从理

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

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

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

编辑:您似乎没有尝试获取自己的IP,而是连接的PC的IP。ActiveSync不是完整的网络连接。它会过滤某些数据包类型,而您无法获得名称解析,因此您无法通过对PC名称执行Dns.Resolve来从设备代码中获取PC的IP地址。您必须直接向设备应用程序提供IP。

我发现了一篇KB文章,它使用主机“PPP\u Peer”。所以我试着:

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

这确实给了我想要的东西(在我目前使用的电脑上是169.254.2.2)。

使用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服务。
Dns.GetHostEntry("PPP_Peer").AddressList[0]