【问题标题】:In UWP TcpListener AcceptTcpClientAsync doesn't work在 UWP TcpListener AcceptTcpClientAsync 不起作用
【发布时间】:2018-02-16 00:54:56
【问题描述】:

我正在移植一些 TcpListener/TcpClient/etc 代码以在 UWP 上工作。但是,在通用 windows c# 应用程序中工作的最基本操作在 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 中选择了 Internet(客户端和服务器)InternetPrivate Networks 功能
  • 我正在移植一个 RTSP 服务器,它可以作为一般的 Windows 应用程序正常工作。因此,我使用的 URI 是“rtsp://localhost:8554”。当构建为命令行窗口应用程序时,将 VLC 指向该 URI 时,上述代码按预期工作。相同代码的 UWP 版本永远等待,VLC 超时。
  • 我是 Windows 的新手,所以我还不知道我不知道什么。

想法:

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

【问题讨论】:

  • 嗨 TomorrowPlusX,我想这与 UWP 不允许您在同一设备上使用 TcpListeners(服务器和客户端)这一事实有关......出于开发目的,您可以删除该限制。检查网络...我无法向您发送详细信息...抱歉
  • 有关环回的详细信息已写在Using network loopback in side-loaded Windows Store apps 上。如果这确实是问题,那么您可以参考 Rob 在 here 上的帖子
  • 非常感谢 - 你们两个都是正确的,这回答了我的问题。目前,我只是在网络上的另一台机器上使用 VLC 进行测试。

标签: c# uwp network-programming


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 2018-10-23
  • 2019-05-11
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多