win 10 UAP/UWP(通用应用程序)的异步套接字库?

Posted

技术标签:

【中文标题】win 10 UAP/UWP(通用应用程序)的异步套接字库?【英文标题】:Async socket library for win 10 UAP/UWP (Universal App)? 【发布时间】:2016-11-11 21:00:23 【问题描述】:

我想通过 Win 10 UAP 上的套接字异步发送序列化的 protobuf 数据(发送到桌面 C# 网络应用程序)。 有没有兼容的库? Fleck、SuperSocket、SignalR、... 注意与 UAP 兼容。 UAP 中甚至没有 Socket.BeginConnect 方法。 有没有办法在 UAP 上使用异步套接字?

【问题讨论】:

UAP 应该是通用应用。你会这样做吗?:Stream streamOut = socket.OutputStream.AsStreamForWrite(); StreamWriter writer = new StreamWriter(streamOut); byte[] binary = touch.ToByteArray(); string binaryString = GetString(binary); await writer.WriteLineAsync(binaryString); await writer.FlushAsync(); 在我看来很难看。 SignalR 与 UWP 平台兼容,只需在 aspnetwebstacknightly 频道上使用 NuGet 即可获得它 究竟是哪个包?在 aspwebstacknighly 上只有 v2.2.1-pre 版本...在 nuget.org 上是 v2.2.0。两者都返回“某些软件包与 UAP 不兼容,Version=v10.0 (win10-x86-aot)。” @pythonimus hi ^^ 你在 UWP 应用中使用 Protobuf 怎么样? 【参考方案1】:

Fleck 和 SuperSocket 与 UWP App 不兼容。但是SignalR增加了对UWP app的支持,但是没有生成Nuget包来支持UWP,所以需要我们自己编译,步骤如下:

    下载SignalR in GitHub源代码。 用你的VS打开Microsoft.AspNet.SignalR.sln(会有一些弹窗提示你安装SilverLight和Windows 8 SDK,你可以忽略它们)。 找到“Microsoft.AspNet.SignalR.Client.UWP”项目->属性->单击Microsoft.AspNet.SignalR.Client.UWP.rd.xml->在下面的属性窗口中将构建操作值从Content更改为Embedded Resouce: 使用发布 AnyCPU 模式构建“Microsoft.AspNet.SignalR.Client.UWP”。找到输出文件:Microsoft.AspNet.SignalR.Client.dllMicrosoft.AspNet.SignalR.Client.UWP\bin\x86 or x64\Release下 在您自己的项目中引用 dll 文件。

现在您可以在 UWP 项目中使用 SignalR。

【讨论】:

我意识到 SignalR 自主机/服务器不适用于 UWP 应用程序(仅客户端,无需在 aspwebstacknighly 上自编译即可使用)。所以我停止使用它。 UWP 应用程序不支持 Owin 上的 SelfHosting SignlarR 吗?我目前有一个使用它的 wpf 应用程序,并且正在考虑迁移到 UWP。找不到有关该问题的任何文档。有解决办法吗?

以上是关于win 10 UAP/UWP(通用应用程序)的异步套接字库?的主要内容,如果未能解决你的问题,请参考以下文章

Windows 10/Win10命令大全通用(Win8,Win7)

win10 uwp 异步转同步

通用peU盘启动盘装win10系统

网易云音乐win10uwp版啥意思

C#异步调用,界面假死

Windows 10 通用删除锁定屏幕图像