在UWP TcpListener中,AcceptTcpClientAsync不起作用

时间:2018-02-16 00:54:57

标签: c# uwp network-programming

我正在移植一些TcpListener / TcpClient / etc代码来处理UWP。但是,在通用Windows c#app中工作的最基本的操作在UWP下失败了。

最基本的操作,例如等待TcpClient失败:

private async Task TestTcpListening()
{
    Debug.WriteLine("Creating TcpListneer");
    int portNumber = 8554;
    TcpListener listener = new TcpListener(IPAddress.Any, portNumber);
    listener.Start();

    while(true)
    {
        Debug.WriteLine("Waiting on TcpListener to accept client");
        TcpClient client = await listener.AcceptTcpClientAsync();
        Debug.WriteLine(string.Format("We got a client! {0}", client));
    }
}

如果我在通用的Windows控制台应用程序中运行此代码,当我勾选localhost URL时,“我们有一个客户端”位会运行。如果它在UWP应用程序中运行,它将永远等待并且调用应用程序超时。

注意:

  • 我在Package.appxmanifest中选择了互联网(客户端和服务器)互联网专用网络功能
  • 我正在移植RTSP服务器,它可以作为一般的Windows应用程序正常工作。因此,我使用的URI是“rtsp:// localhost:8554”。当构建为命令行Windows应用程序时,上面的代码按预期工作,将VLC指向该URI。相同代码的UWP版本永远等待,VLC超时。
  • 我是Windows的新手,所以我还不知道我不知道的事情。

想法:

  • 我是否需要以某种方式启用“rtsp:”协议访问应用程序?当rtsp:url被击中时,我不希望该应用程序打开。我只是希望处理传入的连接。

1 个答案:

答案 0 :(得分:0)

作为Windows开发的新手,尤其是UWP,我对环回限制一无所知。目前,为了测试我的RTSP端口,在同一网络上的另一台计算机上使用VLC解决了我上面的问题。