|
关于我们
新书资讯 新书推荐 |
HarmonyOS网络编程(ArkTS语言版·微课视频版) 本书精心设计,融合了网络协议理论的深度解析、HarmonyOSAPI的详尽探讨及丰富的实际开发案例,旨在全面剖析HarmonyOS网络编程的核心要点与挑战。全书共10章,全面解析HarmonyOS平台下的网络编程技术,从底层的TCP、UDP、HTTP到高级特性的RCP模块和ArkWeb组件,内容循序渐进、深入浅出。每章配有丰富的示例代码与详尽的开发指南,帮助读者快速掌握网络应用的设计与实现,构建高效稳定的网络应用。本书面向有一定ArkTS语言基础的开发者,以及对HarmonyOS网络编程感兴趣的开发者,还可作为高等院校计算机相关课程的教材或参考书。 本书专为鸿蒙操作系统网络编程初学者设计,内容由浅入深,结合丰富示例代码,帮助读者快速掌握核心技能。1.易于入门:每章从简单概念逐步深入复杂应用,确保学习过程平稳过渡。在对协议理论有初步了解以后,针对所学知识点给出编程示例,示例代码结构清晰,注释详细,均通过真机测试,便于读者理解和实践。2.循序渐进:按知识点逻辑编排,从基础协议(例如TCP、UDP、HTTP)到高级特性(RCP模块、ArkWeb),逐步引导读者深入学习。3.实战导向:本书从实战出发引出问题,例如粘包处理、中间人攻击等,分析问题形成的原因,探讨合适的解决方案,最后给出实践示例。 前言 HarmonyOS对中国而言,标志着国产操作系统技术的重大突破,它不仅展现了中国 在全球数字化浪潮中逐步掌握核心技术的努力,也代表了中国科技产业自主发展的决心 和实力。作为全球第三大独立移动操作系统,HarmonyOS打破了西方企业在操作系统领 域的长期主导,为中国在全球科技话语权中提供了新的支点。此外,HarmonyOS的发展 还有助于推动国内相关产业链的成熟,促进技术创新和产业升级,增强国家信息安全和 产业安全。 随着物联网的快速发展,HarmonyOS为开发者提供了一个广阔的舞台。从智能家居 到车联网,再到智能健康监测,每个领域都蕴含着无限的可能性。开发人员可以通过开 发新颖的应用和服务,满足用户日益增长的需求,同时也为企业创造新的商业价值。 对于寻求职业转型或希望在新兴技术领域有所建树的开发人员来讲,HarmonyOS无 疑是一个理想的切入点。中国市场对 HarmonyOS相关人才的需求正在迅速增加,掌握这 一技能不仅可以增强个人竞争力,还有助于实现更好的职业发展。企业也在积极寻找熟 悉 HarmonyOS的开发人员,以推动自身产品的智能化升级。 在当前的行业环境下,HarmonyOS为开发人员提供了一个摆脱“内卷”的绝佳契机。 尽早投身于这一新兴平台,不仅意味着在广阔的蓝海市场中抢占先机,还可以在丰富的 应用场景里探索无限可能,驰骋于创新前沿,挖掘属于自己的发展机遇。 本书主要内容 第 1章为 TCP通信,介绍 TCP的基本概念、工作机制及在 HarmonyOS中的网络编程应用,包括报文格式、三次握手过程和滑动窗口机制。第 2章为通信粘包,解析 TCP粘包现象、成因及解决方案,指导开发者如何编写代码来测试和处理这一常见问题,以确保数据传输的正确性和完整性。第 3章为 UDP通信,讲解 UDP无连接特性及其在实时应用中的优势,创建 UDP回声服务器,实现消息收发,帮助开发者掌握 UDP通信的基本原理和实现方法。第 4章为安全通信,介绍对称加密、非对称加密及 X509数字证书,探讨中间人攻击(MITM)的防范措施,通过具体示例演示加密通信的实现。第 5章为 HTTP数据请求,讲解 HTTP的基本内容,涵盖了请求方法、响应状态码及协议版本的选择等。以示例的形式演示如何处理常见的 HTTP请求,例如文件上传下载、 表单提交、证书锁定等。 第 6章为上传下载部件,介绍 HarmonyOS的上传下载 API,通过该套 API,可以简化上传和下载操作中的复杂性。还讨论了分块下载的需求背景与挑战,展示了如何利用 HTTP的部分传输特性实现分块下载。 第 7章为 RCP模块,详细地讲解了 RCP模块的主要 API及拦截器的工作原理。通过实际案例,演示如何使用 RCP模块实现 HTTP请求、性能监控、文件下载、断点续传等功能,为开发者提供了丰富的实践经验和技巧。 第 8章为 ArkWeb,介绍 HarmonyOS的 ArkWeb组件,支持 Web页面显示、控制及与原生应用互操作,提供丰富的 API,帮助开发者高效嵌入和管理网页内容。 第 9章为 WebSocket,讲解 WebSocket协议推出的背景及应用场景,演示了如何使用 API创建 WebSocket对象、建立连接、发送数据及处理事件。 第 10章为 WLAN网络,介绍 WLAN技术和 WiFi管理 API,通过示例演示 WLAN连接的管理和配置,包括扫描热点、添加候选网络、连接到特定网络、获取连接信息等功能。 本书特色 本书专为鸿蒙操作系统网络编程初学者设计,内容由浅入深,结合丰富示例代码,帮助读者快速掌握核心技能。 1. 易于入门 每章从简单概念逐步深入复杂应用,确保学习过程平稳过渡。在对协议理论有初步了解以后,针对所学知识点给出编程示例,示例代码结构清晰,注释详细,均通过真机测试,便于读者理解和实践。 2. 循序渐进 每章按知识点逻辑编排,从基础协议(例如 TCP、UDP、HTTP)到高级特性(例如 RCP模块、ArkWeb),逐步引导读者深入学习。 3. 实战导向 本书从实战出发引出问题,例如粘包处理、中间人攻击等,分析问题形成的原因,探讨合适的解决方案,最后给出实践示例。 通过阅读本书,读者不仅能掌握鸿蒙操作系统网络编程的基本技能,还能深入了解其背后的技术原理,为实际的开发工作打下坚实基础。 致谢 在这部作品即将付梓之际,我愿借此机会,向那些为中国信息产业自主可控而不懈努力、奋斗的每位同仁致以最深切的敬意。正是你们那如同星星之火般的执着与努力,汇聚成了不可阻挡的燎原之势,推动了我们在基础软硬件领域取得的一系列令人瞩目的突破。 前言 III 我还要向我的家人表达最诚挚的感谢,感谢你们在我写作过程中始终如一的支持与付出。你们的理解与鼓励,是我在写作道路上不断前行的坚强后盾。 此外,我要特别感谢清华大学出版社赵佳霓编辑及参与本书出版的其他工作人员。你们对工作的严谨态度、对图书质量的精益求精,不仅为本书的出版提供了坚实的保障,也成为我职业生涯中不断学习的榜样。你们的敬业精神和专业能力,让我深感敬佩。 在此,我向所有在本书创作过程中给予帮助和支持的朋友们表示衷心的感谢。没有你们,就没有这本书的诞生。 作者 2026年 1月于青岛 张磊,华为开发者专家(HDE)、华为云开发者专家(HCDE)、官方认证首批鸿蒙极客,仓颉语言社区卓越贡献者,著有《仓颉语言网络编程》《仓颉语言元编程》《仓颉语言实战》《鲲鹏架构入门与实战》《鲲鹏开发套件应用快速入门》等图书,研究方向聚焦在基础软件领域的自主可控和国产替代。 目录 第 1章 TCP通信( 38min)·································································································1 1.1 TCP简介·················································································································· 1 1.1.1 报文格式 ······································································································ 1 1.1.2 三次握手 ······································································································ 3 1.1.3 滑动窗口机制 ······························································································· 4 1.2 TCP API····················································································································7 1.2.1 NetAddress ··································································································· 7 1.2.2 TCPConnectOptions ····················································································· 7 1.2.3 TCPSendOptions··························································································· 8 1.2.4 SocketRemoteInfo························································································· 8 1.2.5 SocketMessageInfo ······················································································· 8 1.2.6 SocketStateBase ···························································································· 8 1.2.7 TCPSocket ···································································································· 9 1.2.8 TCPSocketServer ························································································ 10 1.2.9 TCPSocketConnection ················································································ 11 1.3 TCP通信示例 ········································································································ 12 1.3.1 TCP客户端 ································································································ 12 1.3.2 TCP客户端连接超时················································································· 17 1.3.3 邮件发送客户端 ························································································· 23 1.3.4 长时任务处理模块 ····················································································· 33 1.3.5 TCP回声服务器 ························································································ 35 第 2章通信粘包 ( 26min)································································································ 40 2.1粘包的表现 ············································································································ 40 2.2 TCP粘包原因分析 ································································································ 44 2.3 TCP粘包问题解决方案 ························································································· 46 2.3.1 指定数据包结束标志 ················································································· 46 2.3.2 固定包头 +可变包体结构··········································································· 52 第 3章 UDP通信( 16min)······························································································· 59 3.1 UDP简介 ··············································································································· 59 3.2 UDP API ················································································································· 60 3.2.1 UDPSendOptions ························································································ 60 3.2.2 UDPSocket·································································································· 60 3.3 UDP通信示例 ······································································································· 61 3.3.1 UDP客户端 ······························································································· 61 3.3.2 UDP回声服务器························································································ 66 第 4章安全通信 ( 36min)································································································ 71 4.1安全通信的演化 ···································································································· 71 4.1.1 明文通信 ···································································································· 71 4.1.2 对称加密通信 ····························································································· 72 4.1.3 非对称加密通信 ························································································· 73 4.1.4 基于数字证书的非对称加密通信 ····························································· 75 4.2 TLS协议简介 ········································································································ 76 4.3 TLS安全通信 API ································································································· 77 4.3.1 Protocol······································································································· 77 4.3.2 TLSSecureOptions ······················································································ 77 4.3.3 TLSConnectOptions···················································································· 78 4.3.4 TLSSocket ·································································································· 78 4.3.5 TLSSocketServer ························································································ 80 4.3.6 TLSSocketConnection ················································································ 81 4.4签发自签名数字证书 ····························································································· 82 4.4.1 签发简介 ···································································································· 82 4.4.2 签发步骤 ···································································································· 82 4.5数字证书相关 API ································································································· 89 4.5.1 EncodingFormat·························································································· 89 4.5.2 EncodingBlob ····························································································· 90 4.5.3 CertItemType ······························································································ 90 4.5.4 X500DistinguishedName ············································································ 90 4.5.5 X509Cert····································································································· 90 4.6安全通信示例 ········································································································ 92 4.6.1 文件处理模块 ····························································································· 92 4.6.2 数字证书验签 ····························································································· 96 目录 VII 4.6.3 TLS回声服务器······················································································· 103 4.6.4 TLS客户端 ······························································································ 109 第 5章 HTTP数据请求( 43min) ·················································································· 118 5.1 HTTP简介 ··········································································································· 118 5.1.1 HTTP抽象消息结构················································································ 118 5.1.2 HTTP/1.1的消息结构 ·············································································· 119 5.1.3 请求方法 ·································································································· 121 5.1.4 状态码 ······································································································ 122 5.1.5 首部字段 ·································································································· 125 5.2最简单的 HTTP服务器······················································································· 127 5.3 HTTP数据请求 API ···························································································· 133 5.3.1 RequestMethod ························································································· 133 5.3.2 ResponseCode··························································································· 133 5.3.3 HttpProtocol······························································································ 134 5.3.4 HttpDataType···························································································· 135 5.3.5 MultiFormData ························································································· 135 5.3.6 CertType ··································································································· 135 5.3.7 ClientCert·································································································· 136 5.3.8 HttpRequestOptions ·················································································· 136 5.3.9 HttpResponse ···························································································· 138 5.3.10 http.createHttp························································································· 139 5.3.11 HttpRequest····························································································· 139 5.4 HTTP数据请求示例···························································································· 141 5.4.1 模拟登录 ·································································································· 141 5.4.2 登录后下载文件并预览 ··········································································· 146 5.4.3 上传文件 ·································································································· 154 5.4.4 服务器端证书 CA校验方式···································································· 159 5.4.5 服务器端证书锁定防范中间人攻击 ························································ 164 5.4.6 流式响应下载文件并预览 ······································································· 173 第 6章上传下载部件 ( 20min) ······················································································ 180 6.1分块下载的协议支持 ··························································································· 181 6.1.1 分块下载的需求 ······················································································· 181 6.1.2 HTTP支持 ······························································································· 182 6.2分类任务 API······································································································· 183 6.2.1 RequestData······························································································ 183 6.2.2 File············································································································ 183 6.2.3 UploadConfig···························································································· 183 6.2.4 TaskState··································································································· 184 6.2.5 request.uploadFile ····················································································· 184 6.2.6 UploadTask ······························································································· 184 6.2.7 DownloadConfig······················································································· 185 6.2.8 request.downloadFile ················································································ 186 6.2.9 DownloadTask ·························································································· 186 6.2.10 DownloadInfo ························································································· 187 6.3分类任务示例 ······································································································ 188 6.3.1 上传文件 ·································································································· 188 6.3.2 下载文件 ·································································································· 192 6.4统一任务 API······································································································· 198 6.4.1 Action ······································································································· 198 6.4.2 Network ···································································································· 198 6.4.3 Mode········································································································· 198 6.4.4 FileSpec ···································································································· 199 6.4.5 FormItem ·································································································· 199 6.4.6 Config ······································································································· 199 6.4.7 State ·········································································································· 201 6.4.8 Progress ···································································································· 202 6.4.9 Task··········································································································· 202 6.4.10统一任务处理函数 ················································································· 204 6.5统一任务示例 ······································································································ 205 6.5.1 多文件上传 ······························································································ 205 6.5.2 单文件多任务分块下载 ··········································································· 210 第 7章 RCP模块( 15min)····························································································· 219 7.1 RCP模块简介 ······································································································ 219 7.2 RCP模块 API ······································································································ 219 7.2.1 Request ····································································································· 219 7.2.2 Interceptor································································································· 220 7.2.3 RequestContext ························································································· 220 目录 IX 7.2.4 SecurityConfiguration ··············································································· 221 7.2.5 TransferConfiguration ··············································································· 221 7.2.6 Configuration ···························································································· 222 7.2.7 SessionConfiguration ················································································ 222 7.2.8 rcp.createSession······················································································· 223 7.2.9 Session ······································································································ 223 7.3 RCP模块示例 ······································································································ 225 7.3.1 使用 RCP调用 OpenAI接口实现智能助手 ··········································· 225 7.3.2 基于拦截器的性能监控 ··········································································· 232 7.3.3 下载文件并预览示例 ··············································································· 238 7.3.4 服务器端证书的 4种校验方式 ······························································· 243 7.3.5 断点续传下载文件 ··················································································· 250 第 8章 ArkWeb ( 18min) ······························································································ 258 8.1 ArkWeb简介········································································································ 258 8.1.1 App内嵌网页简介··················································································· 258 8.1.2 ArkWeb简介 ···························································································· 258 8.2 ArkWeb API·········································································································· 259 8.2.1 WebOptions······························································································· 259 8.2.2 Web··········································································································· 260 8.2.3 WebDownloadItem···················································································· 261 8.2.4 WebDownloadDelegate············································································· 262 8.2.5 WebviewController ··················································································· 262 8.3 ArkWeb API示例································································································· 263 8.3.1 加载网页的 4种方式 ··············································································· 263 8.3.2 文件上传 ·································································································· 270 8.3.3 文件下载 ·································································································· 275 8.3.4 Web组件与应用互操作··········································································· 280 8.3.5 Web组件打印 ·························································································· 287 第 9章 WebSocket ( 10min)·························································································· 292 9.1 WebSocket简介 ··································································································· 292 9.2 WebSocket API ····································································································· 292 9.2.1 webSocket.createWebSocket····································································· 293 9.2.2 WebSocketRequestOptions ······································································· 293 9.2.3 WebSocketCloseOptions ··········································································· 294 9.2.4 WebSocket ································································································ 294 9.3 WebSocket示例 ··································································································· 296 第 10章 WLAN网络 ( 8min) ······················································································· 301 10.1 WLAN网络简介································································································ 301 10.2 WLAN API ········································································································· 301 10.2.1 WifiSecurityType ·················································································· 301 10.2.2 WifiStandard ························································································· 302 10.2.3 WifiScanInfo ························································································· 303 10.2.4 WifiLinkedInfo······················································································ 304 10.2.5 IpInfo ···································································································· 306 10.2.6 Ipv6Info ································································································ 306 10.2.7 WifiDeviceConfig ················································································· 307 10.2.8 wifiManager的函数 ············································································· 307 10.2.9 wifiManager的事件 ············································································· 309 10.3 WLAN示例 ······································································································· 311 10.3.1 WiFi信息获取······················································································ 311 10.3.2 WiFi热点扫描及连接 ·········································································· 315
你还可能感兴趣
我要评论
|

新书资讯





