通过打开socket到localhost,从WP7连接到连接的pc

时间:2011-03-31 10:19:39

标签: sockets windows-phone-7

在开发和测试WP7应用程序时,您可以将PC连接到真正的WP7手机或WP7设备模拟器。出于特定的开发目的,我想从WP7应用程序直接连接到开发pc(让我们称之为主机pc),而不必依赖外部Toast-server。我正在使用普通套接字,System.Net.Sockets.Socket。

似乎有两种选择:

  1. 获取主机PC的LAN IP并连接到
  2. 连接到localhost
  3. 选项1通常运行良好,但并非总是如此:主机pc可能不一定需要IP,在这种情况下无需连接。此外,在某些情况下,所有LAN流量都通过公司范围的代理进行,这将破坏这种机制。

    这导致我尝试选项2.令我惊讶的是它似乎有效,但我需要更加确定而不仅仅是“它似乎工作”。我已经谷歌搜索过但找不到任何确定的答案,甚至在微软的网站上都没有,例如http://msdn.microsoft.com/en-us/library/ff754351(v=VS.92).aspx。所以这是我的问题:

    从WP7应用程序连接到localhost的定义行为究竟是什么? 另外,是否有一种连接回主机PC的万无一失的方法?

    (让我再次强调一下:为了这个特殊目的,我不能使用敬酒,因为开发电脑可能甚至不在线。)

    修改 我在EQATEC工作,有问题的应用程序是EQATEC Profiler。现在,通过将套接字/ http-client注入部署的WP7应用程序来处理探查器/应用程序通信,该应用程序连接回探查器的LAN IP地址。它工作得非常好而且非常快,但在极少数情况下,用户处于离线状态,因此doesn't have an IPprohibitive lan proxy rules有一些。{
    因此,连接到“localhost”将是非常好的,如果不知何故神奇地总是适用于每个人。它适用于我和几个测试用户,但它是否适用于全世界所有数千个分析用户?我想更加确定。

3 个答案:

答案 0 :(得分:1)

"本地主机"根据定义,运行代码的机器(特别是执行通信的NIC)。对于手机或模拟器,这意味着手机或模拟器,他们所连接的PC。

当您连接到PC时,您确实拥有一个网络 - 它是一个RNDIS连接,其中双方都获得了一个IP地址,传统上(WP7之前)可以通过&#p; ppp-peer&解决#39;虽然我没有在手机上测试过这个分辨率。我怀疑它会是一样的,因为WMDC仍然是什么连接,他们没有理由改变这种连接机制。

如果模拟器正在将本地主机解析为所在的PC,这是一个明确的错误,我不会指望它继续工作,因为它们为Phone平台增加了更强大的套接字支持。

答案 1 :(得分:0)

System.Net.Sockets.Socket目前还不适用于WP7编程,但它可能会在未来某个时候出现(也许在芒果...也许......)

AFAIK,可靠地做你想做的事情的唯一方法是在开发PC上设置一个http服务器,并为你的应用提供该服务器的HTTP地址 - 或通过一些“云代理”路由消息

我很惊讶localhost在真实设备上工作......我只能假设他们要求连接的PC解析该DNS名称 - 但即使这样我也很惊讶127.0.0.1工作。

答案 2 :(得分:0)

您正在寻找的IP是“192.168.55.100”

这是手机用来连接主机的IP地址。

如果你想连接到手机,显然它的IP地址将是“192.168.55.101”

对于模拟器,只需使用localhost或127.0.0.1

这是从旧的ActiveSync时代开始的,所以我不知道它的正式程度或持续时间有多大,但现在至少它可以在我的手机上运行。