2

我正在开发一个客户端/服务器 Javascript Windows 8 Metro 应用程序,我使用Microsoft 的 StreamSocket 示例来实现服务器和客户端之间的通信。现在我几乎完成了实现,我不知道如何在我的计算机上对其进行测试,因为似乎不可能多次运行同一个应用程序。你知道这个问题的任何解决方法吗?

一种解决方法(实际上不是解决方案)是将应用程序多次复制到不同的项目中,然后将其中一个作为服务器启动,并将其他的作为客户端启动。即使使用这种方法,我也无法将我的客户端连接到服务器实例。当服务器实例未启动时,客户端尝试连接服务器后,返回此错误消息:

“由于目标机器主动拒绝,无法建立连接。”

但是,当服务器实例启动并侦听连接时,客户端尝试连接服务器后,它会等待一段时间,然后返回此错误消息:

“连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。”

我知道localhost不支持用于将客户端连接到服务器,并且因为我已连接到网络,所以我使用计算机的 IP 地址作为客户端的地址。我还在服务器和客户端中添加了这些功能:

  • 互联网(客户端)
  • 互联网(客户端和服务器)
  • 专用网络(客户端和服务器)
4

1 回答 1

4

出于localhost调试目的,使用CheckNetIsolation.exe. 您可以通过调用添加应用程序以免除环回隔离:

CheckNetIsolation.exe LoopbackExempt –a –n=myapp_ecet6zh215f62e

最后一部分 ( myapp_ecet6zh215f62e) 是Package family name您的应用程序的,可以在文件Packaging选项卡上找到Package.appxmanifest

您还可以列出所有已豁免的应用程序:

CheckNetIsolation.exe LoopbackExempt –s

更多细节CheckNetIsolation.exe可以在这里找到。

但是,从 Visual Studio 运行的所有应用程序都应该已经豁免。也许有防火墙阻止您的两个应用程序实例连接。尝试暂时禁用它,只是为了确定。

没有办法在一台机器上运行应用程序的多个实例,至少我不知道。在您的情况下,我可能会在我的计算机上安装一个虚拟机并从那里运行第二个实例。无论如何,这将是对真实环境的更好模拟,您甚至可以避免处理环回隔离。

于 2012-12-30T08:19:21.303 回答