我在移动设备上有一个应用程序,它连接到桌面上的服务器应用程序我在桌面上使用TcpListener,在移动设备上使用TcpClient。我试图添加对Windows 8的支持,但似乎Microsoft删除了它,现在我们应该使用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未被调用。
所以我不知道这里有什么不对。
答案 0 :(得分:2)
默认情况下,Windows运行时(商店)应用无法使用网络连接到localhost。该网页对此进行了讨论:http://msdn.microsoft.com/en-us/library/windows/apps/Hh780593.aspx
我无法使用上述说明进行localhost通信,而是选择在本地网络上设置监听器。请注意,默认情况下,即使本地网络访问也处于关闭状态 - 您必须通过Windows运行时应用程序的应用程序清单启用它。