Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 通过打开本地主机的套接字,从WP7连接到连接的pc_Sockets_Windows Phone 7 - Fatal编程技术网

Sockets 通过打开本地主机的套接字,从WP7连接到连接的pc

Sockets 通过打开本地主机的套接字,从WP7连接到连接的pc,sockets,windows-phone-7,Sockets,Windows Phone 7,在开发和测试WP7应用程序时,您的电脑连接到真实的WP7手机或WP7设备模拟器。出于特定的开发目的,我想直接从WP7应用程序连接到开发pc(我们称之为主机pc),而不必依赖外部toast服务器。我使用的是普通套接字,System.Net.sockets.Socket 似乎有两种选择: 获取主机pc的LAN IP并连接到该IP 连接到本地主机 选项1通常运行良好,但并非总是如此:主机pc可能不需要IP,在这种情况下,没有任何连接。此外,在某些情况下,所有LAN流量都通过公司范围的代理进行定向,这将

在开发和测试WP7应用程序时,您的电脑连接到真实的WP7手机或WP7设备模拟器。出于特定的开发目的,我想直接从WP7应用程序连接到开发pc(我们称之为主机pc),而不必依赖外部toast服务器。我使用的是普通套接字,System.Net.sockets.Socket

似乎有两种选择:

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

    这让我尝试了选项2。令我惊讶的是,它似乎起作用了,但我需要更加肯定,而不是简单地“它似乎起作用了”。我在谷歌上搜索了所有地方,但找不到任何明确的答案,甚至在微软的网站上也找不到,比如。这就是我的问题:

    从WP7应用程序连接到本地主机的定义行为是什么?
    另外,有没有一种简单的方法可以连接回主机pc

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

    编辑: 我在EQATEC工作,所讨论的应用程序是EQATEC Profiler。现在,探查器/应用程序通信是通过向已部署的WP7应用程序中注入套接字/http客户端来处理的,该应用程序连接回探查器的LAN IP地址。它工作得很好,速度也很快,但在一些非常罕见的情况下,用户会离线,因此,或有一些离线。

    因此,连接到“localhost”将是非常好的,如果它能神奇地始终适用于每个人。它适用于我和几个测试用户,但它是否适用于全世界数千名分析器用户?我想更确定一点。

    System.Net.Sockets.Socket目前并不真正可用于WP7编程,但它可能在将来某个时候可用(可能在Mango…可能…)

    好吧,要可靠地完成您想做的事情,唯一的方法是在开发PC上设置一个http服务器,并为您的应用程序提供该服务器的http地址,或者通过一些“云代理”路由消息

    我很惊讶localhost能在真正的设备上工作。。。我只能假设他们正在要求连接的PC解析该DNS名称,但即使如此,我还是很惊讶127.0.0.1能够正常工作。

    根据定义,“localhost”是运行代码的机器(特别是进行通信的NIC)。对于手机或模拟器,这意味着手机或模拟器,而不是它们所连接的PC

    当你连接到电脑时,你确实有一个网络——这是一个RNDIS连接,双方都有一个IP地址,传统上(WP7之前)可以通过“ppp对等”解决,尽管我还没有在手机上测试这个解决方案。我怀疑情况会是一样的,因为WMDC仍然是连接的对象,他们几乎没有理由改变这种连接机制


    如果emulator正在将localhost解析为驻留在其上的PC,这是一个明确的错误,我不会指望它继续工作,因为他们为电话平台添加了更强大的套接字支持。

    您要查找的ip是“192.168.55.100”

    这是手机用于连接主机pc的ip地址

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

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


    这是从以前的ActiveSync时代开始的,所以我不知道它有多正式,也不知道它会持续多久,但现在至少它在我的手机上起作用了。

    哦,是的,Socket非常适用于WP7应用程序。没问题。您所建议的(http服务器/客户端)实际上正是我现在正在做的,但是对于一些用户来说,由于本地LAN代理策略的原因,在1)获取IP或2)路由到它时存在问题。这只是针对自制的吗?我以为微软已经关闭了手机上的套接字层,这就是为什么像Skype这样的人不会制作WP7应用程序的原因?不,不仅仅是自制的:-)我已经在编辑我的问题时澄清了这个应用程序。不,客户端套接字在WP7上运行良好,适用于Silverlight和XNA应用程序。不过,你不能设置SocketServer。谢谢,Chris——这也正是我担心的:这种行为实际上不应该在正式场合起作用(我仍然很惊讶它会起作用)。我将检查是否仍然支持ppp对等,并且无论如何不依赖本地主机为每个人工作。这不是一个bug,这是设计的。在WindowsPhone7上,仿真器将把“localhost”解析为它正在运行的PC。显然,这是一个故意的改变,使测试更容易为开发人员。那么,你会如何做任何环回测试从手机到手机?当开发者走短视的捷径时,一定会喜欢它。bug就是bug,不管是有意还是无意。