详解 ASP.NET异步
虐程谠惺功能优势无需网络近场快传技术无需依赖网络在无网络或网络不稳定的环境下玩家也能轻松分享游戏资源或组队。玩家只需将两台支持近场快传的设备靠近即可自动建立连接并开始传输操作简单快捷。高速传输游戏近场快传技术传输速度最高可达100MB/S能够显著提升游戏资源的传输效率。跨设备兼容游戏近场快传支持多种设备平台如Phone、PC/2in1、Tablet实现无缝传输。使用步骤设备靠近玩家需要将支持游戏近场快传的设备靠近以确保能够建立稳定的通信链路。选择传输内容在游戏内或专门的传输应用中玩家需要选择要传输的游戏资源或数据。开始传输一旦设备间建立连接玩家即可启动传输过程等待资源传输完成。接入步骤以下示例中使用的API说明详见接口文档。开发流程图片1导入模块导入Game Service Kit及公共模块。import { abilityAccessCtrl, AbilityConstant, UIAbility, common } from kit.AbilityKit;import { hilog } from kit.PerformanceAnalysisKit;import { gameNearbyTransfer } from kit.GameServiceKit;import { BusinessError } from kit.BasicServicesKit;申请权限申请ohos.permission.DISTRIBUTED_DATASYNC权限用于设备发现。let atManager abilityAccessCtrl.createAtManager();let uiAbilityContext this.getUIContext()?.getHostContext() as common.UIAbilityContext;try {atManager.requestPermissionsFromUser(uiAbilityContext, [ohos.permission.DISTRIBUTED_DATASYNC]).then((data) {hilog.info(0x0000, nearby, %{public}s, data: JSON.stringify(data));}).catch((err: object) {hilog.error(0x0000, nearby, %{public}s, err: JSON.stringify(err));})} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}创建游戏近场快传服务并注册相关回调导入相关模块后需先调用create接口创建游戏近场快传服务然后注册各回调事件。public create() {let uiAbilityContext this.getUIContext()?.getHostContext() as common.UIAbilityContext;let initParam: gameNearbyTransfer.CreateParameters {abilityName: uiAbilityContext.abilityInfo.name,context: uiAbilityContext,moduleName: uiAbilityContext.abilityInfo.moduleName,needShowSystemUI: false // 是否展示系统UItrue为展示false为不展示默认为false};try {gameNearbyTransfer.create(initParam).then((createResult) {hilog.info(0x0000, [nearby], %{public}s, create success createResult.localDeviceName);this.registerCallback();}).catch((err: BusinessError) {hilog.error(0x0000, [nearby], %{public}s, create error (err as Error).message);})} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}}// 注册监听public registerCallback() {try {gameNearbyTransfer.on(connectNotify, connectNotifyCallBack);gameNearbyTransfer.on(receivePackageInfo, receivePackageInfoCallBack);gameNearbyTransfer.on(transferNotify, transferNotifyCallBack);gameNearbyTransfer.on(error, errorCallBack);} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}}function connectNotifyCallBack(callback: gameNearbyTransfer.ConnectNotification) {}function receivePackageInfoCallBack(callback: gameNearbyTransfer.PackageInfo) {}function transferNotifyCallBack(callback: gameNearbyTransfer.TransferNotification) {}function errorCallBack(callback: gameNearbyTransfer.ReturnResult) {}接收端接受协同接收端实现onCollaborate回调回调中调用acceptCollaboration接口接受协同。export default class EntryAbility extends UIAbility {// 协同回调onCollaborate(wantParam: Record): AbilityConstant.CollaborateResult {try {gameNearbyTransfer.acceptCollaboration(wantParam);} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}hilog.info(0x0000, [nearby], %{public}s, onCollaborate: accept collaborate);return AbilityConstant.CollaborateResult.ACCEPT;}}接收端发布自身游戏近场快传服务接收端调用publishNearbyGame接口发布自身游戏近场快传服务。try {gameNearbyTransfer.publishNearbyGame().then(() {hilog.info(0x0000, [nearby], %{public}s, publishNearbyGame success);}).catch((err: BusinessError) {hilog.error(0x0000, [nearby], %{public}s, publishNearbyGame error);})} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}发送端绑定接收端游戏近场快传服务发送端绑定接收端游戏近场快传服务支持如下两种方式自动绑定和选择绑定。这里以自动绑定为例发送端调用autoBindNearbyGame接口自动绑定接收端近场快传服务。try {gameNearbyTransfer.autoBindNearbyGame().then(() {hilog.info(0x0000, [nearby], %{public}s, autoBindNearbyGame success);}).catch((err: BusinessError) {hilog.error(0x0000, [nearby], %{public}s, autoBindNearbyGame error);})} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}接收端发送自身文件信息收到建链成功回调后接收端调用sendPackageInfo接口发送自身文件如版本信息、包信息包名和扩展数据的字符长度范围[0, 2048]、版本号字符长度范围[0, 256]、文件列表最多10000条。function connectNotifyCallBack(callback: gameNearbyTransfer.ConnectNotification) {if (callback.connectState gameNearbyTransfer.ConnectState.CONNECTED) {// 连接成功回调判断当前是否为接收端。若当前设备为接收端请设置为true否则请设置为false。let isReceive true;if (!isReceive) {return;}// 接收端收到连接回调后需要处理,发送资源包信息给发送端let packageInfo: gameNearbyTransfer.PackageInfo {name: com.huawei.xxxx,files: [],version: 1.1.0,extraData: extraData};let fileInfo: gameNearbyTransfer.FileInfo {path: /xxx/xxxx/files/data.zip, // 使用沙箱路径hash: fileHash // 可选};packageInfo.files?.push(fileInfo);try {gameNearbyTransfer.sendPackageInfo(packageInfo).then(() {hilog.info(0x0000, [nearby], %{public}s, sendPackageInfo success);}).catch((err: BusinessError) {hilog.error(0x0000, [nearby], %{public}s, sendPackageInfo error);});} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}}}发送端对比后传输资源包发送端收到接收端发送的版本信息后进行对比调用replyPackageInfoResult上报对比结果根据对比结果决定是否需要调用transferPackageData接口发送资源包数据。function receivePackageInfoCallBack(callback: gameNearbyTransfer.PackageInfo) {// 比较版本,决定是否需要发送资源包,也可以比较文件hashlet packageInfoResult: gameNearbyTransfer.PackageInfoResult {packageInfoResultCode: gameNearbyTransfer.PackageInfoResultCode.PACKAGE_AVAILABLE_COMPARED};try {// 上报对比结果gameNearbyTransfer.replyPackageInfoResult(packageInfoResult).then(() {let packageData: gameNearbyTransfer.PackageData {name: com.huawei.gamenearbydemo,version: 1.0.0,files: [{srcPath: /data/xxxx/a.zip, // srcPath是需要发送文件的沙箱路径详情请参见应用沙箱目录。destPath: xxxx/a.zip // destPath是接收文件的自定义路径完整的沙箱路径是fileStoragePathdestPath详情请参见应用沙箱目录。}]}try {// 发送资源包gameNearbyTransfer.transferPackageData(packageData).then(() {// 发送成功}).catch((err: BusinessError) {// 发送异常hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);});} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}}).catch((err: BusinessError) {// 上报异常hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);});} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}}处理资源包传输进度信息发送端和接收端在传输回调中处理传输进度信息。function transferNotifyCallBack(callback: gameNearbyTransfer.TransferNotification) {if (callback.transferState gameNearbyTransfer.TransferState.SEND_PROCESS) {// 处理发送进度,如显示进度条和速率}if (callback.transferState gameNearbyTransfer.TransferState.SEND_FINISH) {// 发送完成}if (callback.transferState gameNearbyTransfer.TransferState.RECEIVE_PROCESS) {// 处理接收进度,如显示进度条和速率}if (callback.transferState gameNearbyTransfer.TransferState.RECEIVE_FINISH) {// 接收完成,获取到资源包存储的沙箱路径let fileStoragePath callback.fileStoragePath;// 对fileStoragePath下的文件做处理}}处理已接收资源包后销毁服务对已接收数据做好处理或转移后调用destroy接口销毁服务。若服务销毁后再次使用近场快传服务需重新创建游戏近场快传服务并注册相关回调。public destroy() {// 取消回调注册this.unregisterCallback();// 销毁服务try {gameNearbyTransfer.destroy().then(() {hilog.info(0x0000, [nearby], %{public}s, destroy success);}).catch((err: Error) {hilog.error(0x0000, [nearby], %{public}s, destroy error (err as Error).message);});} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}}public unregisterCallback() {try {gameNearbyTransfer.off(connectNotify, connectNotifyCallBack);gameNearbyTransfer.off(receivePackageInfo, receivePackageInfoCallBack);gameNearbyTransfer.off(transferNotify, transferNotifyCallBack);gameNearbyTransfer.off(error, errorCallBack);// 发送端选择手动绑定接收端且已订阅discovery事件gameNearbyTransfer.off(discovery, discoveryCallBack);} catch (err) {hilog.error(0x0000, [nearby], %{public}s, error (err as Error).message);}}function connectNotifyCallBack(callback: gameNearbyTransfer.ConnectNotification) {}function receivePackageInfoCallBack(callback: gameNearbyTransfer.PackageInfo) {}function transferNotifyCallBack(callback: gameNearbyTransfer.TransferNotification) {}function errorCallBack(callback: gameNearbyTransfer.ReturnResult) {}function discoveryCallBack(callback: gameNearbyTransfer.DiscoveryResult) {

相关新闻

浅谈SQL Server中的快照

浅谈SQL Server中的快照

宋寿袄玖前言 研发突然反馈一个版本上线后线上系统younggc时间变长,而这个版本修改的代码就是非常普通的CRUD,但是younggc时间就硬生生暴涨了100%。导致天天告警,虽然问题不大,但非常想知道原因,于是向我求助。 问题现…

2026/7/7 16:43:30 阅读更多 →
CQRS实践(): Command的实现

CQRS实践(): Command的实现

酒付拱牡前言 本文梳理一下怎么给WPF应用增加自己的项目图标,还是以Rouyan为例进行说明。 过程 首先想一下这个项目图标想要运用在哪些地方。在WPF中你想为你的应用增加你的项目图标主要在这三个地方。 1、应用程序图标设置 2、窗口图标设置 3、系统托盘图标设置 应…

2026/5/17 2:34:56 阅读更多 →
T-SQL查询进阶—理解SQL Server中的锁

T-SQL查询进阶—理解SQL Server中的锁

捉磐酱茁什么是混剪视频 混剪视频是指将多个视频片段、图片或音频素材进行剪辑组合,创造出新的视频内容。 随着Coze上线联动剪映功能,混剪视频制作正在进入自动化时代,为创作者带来巨大便利。 图中展示了混剪视频的部分案例,它们呈…

2026/7/6 8:44:23 阅读更多 →

最新新闻

工业级EEPROM与MCU的可靠数据存储方案

工业级EEPROM与MCU的可靠数据存储方案

1. 项目背景与核心需求在工业控制和嵌入式系统领域,数据存储的可靠性直接关系到整个系统的稳定性。M24256E这颗EEPROM芯片和TM4C1299NCZAD微控制器的组合,恰好能满足严苛环境下的数据持久化需求。我最近在一个风力发电监控项目中采用了这套方案&#xff…

2026/7/7 16:43:50 阅读更多 →
开源鸿蒙 PC 高校师资培训暨鸿蒙 PC 俱乐部启动|全国高校正式招募

开源鸿蒙 PC 高校师资培训暨鸿蒙 PC 俱乐部启动|全国高校正式招募

2024 年华为开源鸿蒙 PC 版本正式发布,国产独立桌面操作系统迎来全新格局!目前全国多数高校尚未开设鸿蒙 PC 相关课程,专业师资极度稀缺,行业缺口巨大。 全国高校开源鸿蒙 PC 师资公益培训重磅启动!本次培训面向全国高…

2026/7/7 16:43:50 阅读更多 →
Kruskal-Wallis 检验 4 大常见误区:从假设条件到事后检验的完整避坑指南

Kruskal-Wallis 检验 4 大常见误区:从假设条件到事后检验的完整避坑指南

Kruskal-Wallis 检验实战避坑指南:从中位数误解到事后检验的深度解析当你面对三组或更多非正态分布数据时,Kruskal-Wallis检验往往是首选的统计工具。但许多分析师在使用过程中,常常陷入一些看似简单却影响深远的误区。本文将带你深入剖析这些…

2026/7/7 16:43:50 阅读更多 →
告别限速烦恼:BaiduPCS-Web百度网盘高速下载终极指南

告别限速烦恼:BaiduPCS-Web百度网盘高速下载终极指南

告别限速烦恼:BaiduPCS-Web百度网盘高速下载终极指南 【免费下载链接】baidupcs-web 项目地址: https://gitcode.com/gh_mirrors/ba/baidupcs-web 还在为百度网盘下载速度慢如蜗牛而烦恼吗?当你急需下载重要文件,却发现进度条几乎不动…

2026/7/7 16:43:50 阅读更多 →
如何免费使用这款强大的AI图像增强工具:Real-ESRGAN-ncnn-vulkan终极完整指南

如何免费使用这款强大的AI图像增强工具:Real-ESRGAN-ncnn-vulkan终极完整指南

如何免费使用这款强大的AI图像增强工具:Real-ESRGAN-ncnn-vulkan终极完整指南 【免费下载链接】Real-ESRGAN-ncnn-vulkan NCNN implementation of Real-ESRGAN. Real-ESRGAN aims at developing Practical Algorithms for General Image Restoration. 项目地址: h…

2026/7/7 16:37:49 阅读更多 →
使用 DevEco Studio 配置 Flutter 鸿蒙签名

使用 DevEco Studio 配置 Flutter 鸿蒙签名

签名是鸿蒙应用从开发到发布绕不开的一环。本文以 E-Brufen 的真实签名为例,详解完整的证书配置流程。 一、为什么需要签名? HarmonyOS 要求所有 HAP 包必须经过数字签名才能安装运行。签名体系包含四个关键文件: 文件扩展名用途密钥库.p12…

2026/7/7 16:37:49 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻