Flutter for OpenHarmony: Flutter 三方库 http_multi_server 在鸿蒙上同时开启多地址 HTTP 服务(局域网协作神器)

Flutter for OpenHarmony: Flutter 三方库 http_multi_server 在鸿蒙上同时开启多地址 HTTP 服务(局域网协作神器)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net

在这里插入图片描述

前言

在进行 OpenHarmony 应用开发时,有时我们需要在 App 内部启动一个本地服务器,例如:

  • 为内嵌的 Webview 提供本地资源访问。
  • 在局域网内进行设备间的数据同步(如投屏、文件传输)。
  • 进行自动化集成测试。

通常的 HttpServer.bind 只能绑定一个地址(要么是 localhost,要么是具体的 IP)。而 http_multi_server 允许你一次性绑定多个地址,让你的鸿蒙 App 同时在本地回环和局域网 IP 上提供服务。

一、核心原理解析

它实际上是一个 HttpServer 的聚合器。它通过同时启动多个底层的 Dart HttpServer 实例,并将它们分发的请求流(Request Stream)进行合并。

鸿蒙 Flutter App

HttpMultiServer

HttpServer (localhost:8080)

HttpServer (192.168.1.10:8080)

HttpServer (::1:8080)

统一的 HttpRequest 流

业务处理逻辑 (如 shelf)

二、核心 API 实战

2.1 绑定所有可用地址

这是最通用的用法,会自动绑定 IPv4 和 IPv6 的所有可用环回或全局地址。

import'package:http_multi_server/http_multi_server.dart';voidstartServer()async{// 💡 在 8080 端口绑定所有可用地址final server =awaitHttpMultiServer.bind('any',8080);print('服务器已启动,正在监听:${server.address}'); server.listen((request){ request.response ..write('来自鸿蒙本地服务器的消息')..close();});}
在这里插入图片描述


在这里插入图片描述

2.2 绑定特定列表

final server =awaitHttpMultiServer.bind([InternetAddress.loopbackIPv4,'192.168.31.100',// 💡 鸿蒙真机的局域网 IP],8081);
在这里插入图片描述


在这里插入图片描述

2.3 获取实际监听地址

由于是多地址绑定,你可以通过属性查看具体详情。

print('连接地址列表: ${server.connections}');
在这里插入图片描述


在这里插入图片描述

三、OpenHarmony 平台适配

3.1 端口占用处理

在鸿蒙设备上启动服务器前,请务必检查端口是否被系统或其他应用占用。建议使用随机端口(端口号设为 0)。

3.2 局域网访问权限

💡 注意:如果希望局域网内的其他设备(如 PC 浏览器)访问鸿蒙手机上的该服务,除了 ohos.permission.INTERNET,通常还需要确保手机和电脑在同一个 WiFi 下,且关闭了 AP 隔离。

3.3 性能与能耗建议

在鸿蒙系统中,后台运行的 HTTP 服务可能会被系统挂起。如果用于长时间的文件传输,建议配合鸿蒙的“持续任务”申请相关的保活权限。

四、完整实战示例:鸿蒙企业级多端口分发中心

本示例展示了如何结合 shelf 框架,在鸿蒙设备上构建一个结构化的多址 HTTP 服务。

import'package:http_multi_server/http_multi_server.dart';import'package:shelf/shelf.dart';import'package:shelf/shelf_io.dart'as shelf_io;voidsetupOhosService()async{// 1. 💡 绑定所有地址 (any) 在 9000 端口final multiServer =awaitHttpMultiServer.bind('any',9000);// 2. 💡 路由处理逻辑 (包含路径过滤与 HTML 返回)Response_handler(Request request){// 过滤浏览器自动发起的图标请求if(request.url.path =='favicon.ico')returnResponse.notFound(null);returnResponse.ok('<h1>🚀 鸿蒙企业中心</h1><p>已成功处理来自 ${request.url.path} 的请求</p>', headers:{'content-type':'text/html; charset=utf-8'},);}// 3. 💡 集成 Shelf 管道与多址监听器var pipeline =constPipeline().addMiddleware(logRequests()).addHandler(_handler);// 💡 将 multiServer 实例传给 shelf_io 进行分发 shelf_io.serveRequests(multiServer, pipeline);print("✅ 服务已上线: http://localhost:9000");}
在这里插入图片描述


在这里插入图片描述

五、总结

http_multi_server 为 OpenHarmony 开发者处理复杂的网络拓扑提供了极大的便利。它屏蔽了 IPv4/IPv6 以及不同网络接口的底层差异,让你能通过同一套逻辑实现“内外网同时监听”。无论是做本地调试工具还是跨设备分发功能,它都是构建鸿蒙嵌入式服务的标准底板。

Read more

开源漫画工具Tachiyomi完全指南:从入门到精通

开源漫画工具Tachiyomi完全指南:从入门到精通 【免费下载链接】websiteOfficial website for the Tachiyomi app. 项目地址: https://gitcode.com/gh_mirrors/website72/website Tachiyomi是一款专为Android设备设计的开源漫画工具,通过自定义漫画源和灵活的阅读设置,帮助用户构建个性化的漫画库。本文将详细介绍如何利用这款工具实现自定义漫画源添加、离线阅读管理以及个性化阅读体验设置,让你轻松掌握漫画资源的高效管理方法。 核心功能解析 如何添加自定义漫画源 目标:配置漫画内容来源,获取多样化的漫画资源 操作: * 本地文件导入:将漫画文件存储在设备中,通过"浏览"页面的"本地源"功能选择文件目录 * 扩展仓库添加:进入"扩展"页面,点击"+"图标输入扩展源URL(

By Ne0inhk

SAM 3开源模型:支持LoRA微调的轻量版SAM 3-Tiny部署教程

SAM 3开源模型:支持LoRA微调的轻量版SAM 3-Tiny部署教程 1. 为什么需要一个更轻、更灵活的SAM? 你可能已经用过SAM(Segment Anything Model),那个能“点一下就分割万物”的神奇模型。但实际落地时,很多人会遇到几个现实问题:原始SAM模型太大,显存吃紧;推理速度慢,没法在边缘设备跑;想让它识别自家产线上的零件、医疗影像里的特定病灶,又没法直接改——毕竟它是个冻结权重的“黑盒子”。 SAM 3 就是在这个背景下出现的:它不是简单复刻,而是真正面向工程落地重构的统一视觉基础模型。它首次把图像分割、视频对象跟踪、跨帧一致性建模全打通,还关键性地支持LoRA微调——这意味着你不用动整个模型,只加几MB参数,就能让SAM 3-Tiny学会识别“电路板焊点”“水稻叶片病斑”“宠物猫耳朵轮廓”这类专业目标。 更重要的是,SAM 3-Tiny是专为轻量化设计的版本:参数量不到原版SAM的1/5,单卡24GB显存即可流畅运行,推理延迟降低60%以上,

By Ne0inhk
开源新势力:openGauss 在数字时代企业级开源库选型核心的竞争力

开源新势力:openGauss 在数字时代企业级开源库选型核心的竞争力

前言 在 AI 与大数据深度融合的数字化浪潮中,数据形态正从单一结构化向 “结构化 + 非结构化” 混合形态演进。而数据库作为企业数据资产的核心载体,其选型直接关系到业务连续性、数据安全性与技术前瞻性。随着开源技术成为企业级应用的主流选择,市场对数据库的需求已从单纯的 “存储与查询”,升级为对 “高性能、高安全、高可用、智能化” 综合能力的诉求。 openGauss 作为源于华为技术沉淀的企业级开源关系型数据库,凭借架构创新、技术突破与生态共建,已成为越来越多关键行业的选型之一。下面,我们就来探究 openGauss 在数据库选型中究竟具备哪些竞争力! 一、openGauss 向量数据库简介 openGauss是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。其核心架构采用 “内核 + 引擎” 的模块化设计,内核层面保留关系型数据库的 ACID 事务特性,引擎层面则集成 DataVec 向量数据库能力,形成 “结构化

By Ne0inhk

嫌 OpenClaw 太重?ZeroClaw 重磅开源!

大家好,我是玄姐。 摘要:当 OpenClaw 的 Node.js 内存占用让你抓狂,当 Agent 的响应速度无法满足实时需求,是时候看看 Rust 带来的新选择了。ZeroClaw,一个 100% Rust 编写、极致轻量、高度模块化的 AI Agent 框架,正式开源。 过去的一个月里,OpenClaw(及其前身 Moltbot/Clawdbot)以其强大的生态和易用性,几乎成为了开源 AI Agent 的代名词。然而,随着大家在生产环境中通过 Node.js 运行越来越复杂的 Agent 工作流,一些问题也逐渐浮出水面: 资源消耗大:Node.js 运行时的内存占用在多 Agent 场景下显得捉襟见肘。

By Ne0inhk