Universal App中基于StreamSocketListener的服务器

时间:2015-08-11 23:40:21

标签: xaml visual-c++ windows-10 uwp

众所周知,Windows 8.1和Windows Phone 8.1对第三方应用的后台活动施加了很多限制。例如,无需在Store App中开发类似服务器的功能(例如BitTorrent),而无需使用DisplayRequest始终保持屏幕开启。

从最新的文档中,我感觉可以利用EnableTransferOwnership的方法StreamSocketListener将通常的请求处理代码委托给后台任务。问题是我不知道IBackgroundTask在这种情况下应该如何工作。通常,它们由某些条件/触发器激活,例如“Internet变为可用”。在这种情况下唯一合理的触发器似乎是ControlChannelTrigger但显然,文档暗示它不能与StreamSocketListener一起使用,因为应用程序需要是创建和注册StreamSocket的人,而不是等待某个连接客户端创建套接字。

现在可以在Windows 10 Universal app平台中实现基于StreamSocketListener的服务器吗?如果是,我该怎么做?

1 个答案:

答案 0 :(得分:0)

使用它来激活套接字活动的后台任务,例如在应用程序未处于活动状态时接收数据,例如:

var socketTaskBuilder = new BackgroundTaskBuilder();
socketTaskBuilder.Name = "SocketActivityBackgroundTask";
socketTaskBuilder.TaskEntryPoint = "SocketActivityBackgroundTask.SocketActivityTask";
var trigger = new SocketActivityTrigger();
socketTaskBuilder.SetTrigger(trigger);
var task = socketTaskBuilder.Register();

socket = new StreamSocket();
socket.EnableTransferOwnership(task.TaskId, SocketActivityConnectedStandbyAction.Wake);

有关完整示例,请查看Socket Activity sampledocumentation