【问题标题】:Async socket library for win 10 UAP/UWP (Universal App)?win 10 UAP/UWP(通用应用程序)的异步套接字库?
【发布时间】: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 怎么样?

标签: c# sockets uwp


【解决方案1】:

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

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

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

【讨论】:

  • 我意识到 SignalR 自主机/服务器不适用于 UWP 应用程序(仅客户端,无需在 aspwebstacknighly 上自编译即可使用)。所以我停止使用它。
  • UWP 应用程序不支持 Owin 上的 SelfHosting SignlarR 吗?我目前有一个使用它的 wpf 应用程序,并且正在考虑迁移到 UWP。找不到有关该问题的任何文档。有解决办法吗?
猜你喜欢
  • 2016-02-07
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-24
  • 2018-02-03
  • 2016-11-05
  • 1970-01-01
  • 2016-08-14
相关资源
最近更新 更多