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.dll
在Microsoft.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(通用应用程序)的异步套接字库?的主要内容,如果未能解决你的问题,请参考以下文章