【问题标题】:Can't use StreamSocket to connect to a TcpListener无法使用 StreamSocket 连接到 TcpListener
【发布时间】:2012-11-04 19:12:36
【问题描述】:

我在移动设备上有一个应用程序,它连接到我在桌面上的服务器应用程序我在桌面上使用 TcpListener,在移动设备上使用 TcpClient。我试图添加对 Windows 8 的支持,但似乎微软删除了它,现在我们应该使用 StreamSocket 作为 TcpClient 和 StreamSocketListener 作为 TcpListener。我试图更改我的代码,但它甚至没有连接到我的 TcpListener。 (请注意,我也在桌面上使用了异步)。

我桌面上的 TcpListener:

server = new TcpListener(Constants.DEFAULT_PORT);

server.Start();

server.BeginAcceptSocket(new AsyncCallback(OnAccept), null);

我的 Windows 8 上的 StreamSocket:

var client = new StreamSocket();
await client.ConnectAsync(new EndpointPair(new HostName("localhost"), "7800", new HostName("localhost"), "7800"));

它通过了 ConnectAsync 线而没有连接,因为我在桌面上的 OnAccept 没有被调用。

所以我不知道这里有什么问题。

【问题讨论】:

  • 是的!因为我只是在我的机器上测试,我只有这台机器。

标签: c# windows-runtime tcplistener


【解决方案1】:

默认情况下,Windows 运行时(存储)应用无法使用网络连接到 localhost。这个网页谈论它:http://msdn.microsoft.com/en-us/library/windows/apps/Hh780593.aspx

使用上述说明,我始终无法使 localhost 通信正常工作,而是选择在我的本地网络上设置一个侦听器。请注意,即使本地网络访问默认关闭 - 您必须通过 Windows 运行时应用的应用程序清单启用它。

【讨论】:

  • 还应该指出的是,即使使用提供的链接中的说明(我没有尝试过),与本地主机上的另一个进程通信也只允许用于开发目的,即在 Visual Studio 中。
  • 您可以在另一个 SO 问题中找到解决方案:stackoverflow.com/questions/7465517/…
猜你喜欢
  • 2018-10-07
  • 2015-08-16
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多