首页 游戏 软件 资讯 排行榜 专题
首页
业界动态
Zeroconf,一个相互发现的 Python 库!

Zeroconf,一个相互发现的 Python 库!

热心网友
67
转载
2026-04-14

Zeroconf:让Python程序在局域网内“自报家门”的利器

你是否好奇过,为什么新买的智能音箱一开机,手机App就能立刻找到它?这背后并非魔法,而是一项成熟的技术在默默工作——Zeroconf,即零配置网络。它让设备在局域网内无需手动设置IP或端口,就能自动发现彼此。而在Python的世界里,zeroconf模块正是实现这一“即插即用”能力的核心工具。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

今天,我们就通过几个实战片段,来拆解它的核心用法。

实战:发布一个服务

想让你的Python程序在局域网里“亮起招牌”,其实非常简单。下面以创建一个模拟的打印服务为例。

from zeroconf import ServiceInfo, Zeroconf

desc = {"path": "/print/queue", "version": "1.0"}
info = ServiceInfo(
    "_http._tcp.local.",
    "MyPrinter._http._tcp.local.",
    addresses=[socket.inet_aton("192.168.1.10")],
    port=8080,
    properties=desc,
    server="myprinter.local."
)
zeroconf = Zeroconf()
zeroconf.register_service(info)

这段代码的逻辑很清晰:首先导入必要的类。ServiceInfo对象定义了服务的“身份证”,包括服务类型、名称、IP地址和端口。最关键的一步是调用register_service,执行后,这个打印服务的信息就会在局域网内广播开来。此时,在其他设备上使用支持的服务发现工具,就能看到类似这样的信息:

Service: MyPrinter._http._tcp.local.
Address: 192.168.1.10:8080
Properties: {"path": "/print/queue", "version": "1.0"}

实战:优雅地停止服务

服务发布后,用完了可不能一走了之,必须优雅关闭,否则会持续占用网络资源。来看看如何妥善清理。

import time

try:
    input("Service running, press Enter to stop...")
finally:
    zeroconf.unregister_service(info)
    zeroconf.close()

这里的处理方式体现了健壮性:程序通过input等待用户指令。无论用户是正常按下回车还是程序中途遇到问题,finally块都会确保执行后续清理动作——先调用unregister_service从网络中注销服务,再通过close释放Zeroconf实例占用的网络套接字。控制台输出会直观地反映这个过程:

Service running, press Enter to stop...
[用户按下回车]
Service unregistered.
Connection closed.

实战:发现局域网服务

有发布的,自然就有发现的。如何让客户端主动查找局域网内的服务呢?下面演示如何扫描所有HTTP类型的服务。

from zeroconf import ServiceBrowser, Zeroconf

class MyListener:
    def add_service(self, zeroconf, type, name):
        info = zeroconf.get_service_info(type, name)
        print(f"Found: {name} at {info.addresses[0]}:{info.port}")

zeroconf = Zeroconf()
listener = MyListener()
browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener)

其工作机制是典型的事件驱动模式:我们定义一个MyListener监听器。当ServiceBrowser在网络上发现新的_http._tcp.local.类型服务时,会自动回调add_service方法。在这个方法内部,我们通过get_service_info获取服务的详细地址和端口并打印出来。运行后,控制台会动态地列出所有发现的设备,例如:

Found: MyPrinter._http._tcp.local. at 192.168.1.10:8080
Found: MediaServer._http._tcp.local. at 192.168.1.22:8000

优势与短板

与手动使用socket广播或通过requests轮询相比,zeroconf的核心优势在于其高度的自动化和标准化。它真正实现了“零配置”发现,彻底避免了在代码中硬编码IP和端口的麻烦。当然,它并非万能。主要短板在于其依赖相对较重,并且受限于协议本身,无法跨越不同子网进行服务发现。因此,它最适合的应用场景集中在智能家居、办公室或实验室的局域网设备互联等领域。

写在最后

通过发布、清理和发现这三个连贯的实战步骤,我们完整地走通了zeroconf模块的核心工作流。它就像一把精心设计的瑞士军刀,将设备间复杂的网络“握手”过程,简化成了几行清晰的代码。如果你在过往的项目中采用过其他服务发现方案,不妨对比一下,看看各自的适用边界在哪里。

今日推荐

批量文档加密/解密软件工具,批量导入wps/office文档,支持.docx/.xlsx/.pptx格式的文档设置密码后进行批量加密/批量解密操作。软件永久可用无需激活、无需机器绑定,支持windows7/10/11操作系统。

来源:https://www.51cto.com/article/839777.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Zeroconf,一个相互发现的 Python 库!
业界动态
Zeroconf,一个相互发现的 Python 库!

Zeroconf:让Python程序在局域网内“自报家门”的利器 你是否好奇过,为什么新买的智能音箱一开机,手机App就能立刻找到它?这背后并非魔法,而是一项成熟的技术在默默工作——Zeroconf,即零配置网络。它让设备在局域网内无需手动设置IP或端口,就能自动发现彼此。而在Python的世界里,

热心网友
04.14
Pandas-Profiling,一个 Python 效率神器!
业界动态
Pandas-Profiling,一个 Python 效率神器!

Pandas-Profiling:让探索性数据分析效率翻倍的神器 很多数据分析新手,最初可能都用过 df describe() 和 df info() 这两板斧来初步了解数据。这当然没错,但效率上总感觉差了那么一口气。 今天要介绍一个堪称神器的工具——Pandas-Profiling。它能一键生成一

热心网友
04.14
打工人救星:用 Python 处理 CSV,效率提升十倍
业界动态
打工人救星:用 Python 处理 CSV,效率提升十倍

临近下班,季度销售数据整理的任务突然砸下来。一个几十兆的 CSV 文件,用 Excel 打开就得转上三分钟圈,后续的筛选、汇总更是能折腾到人仰马翻。这种场景,相信不少朋友都经历过。 于是你会发誓,一定要找到更高效的办法。没错,用 Python 处理 CSV,从曾经的煎熬到如今的五分钟搞定,这中间的转

热心网友
04.14
Pandas 入门二:DataFrame 核心操作,新手也能轻松筛选/修改数据
业界动态
Pandas 入门二:DataFrame 核心操作,新手也能轻松筛选/修改数据

Pandas数据处理实战:从数据洞察到精准操作 在上一篇文章中,我们掌握了Pandas的安装和数据读取,成功将表格数据加载为DataFrame。今天,我们将继续深入,聚焦数据处理中最核心的三个环节:如何快速了解你的数据、如何精准筛选出目标信息,以及如何高效地修改数据内容。每个环节都配有可直接复制的代

热心网友
04.14
Pandas 入门三:数据清洗必学!缺失值/重复值处理,一步到位不踩坑
业界动态
Pandas 入门三:数据清洗必学!缺失值/重复值处理,一步到位不踩坑

今天我们将会学习 Pandas 数据清洗的核心:缺失值“先检测后处理(删除 填充)”,重复值“一键去重”,新手跟着代码跑一遍就能掌握! 大家好,Pandas系列教程继续推进。前两期我们搭建了基础环境,掌握了数据读取和DataFrame的核心操作。今天,我们要深入到数据处理中避不开的“关键一步”——数

热心网友
04.14

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

Lemonaid-AI音乐生成工具
AI
Lemonaid-AI音乐生成工具

Lemonaid是什么 如果你正为音乐创作寻找得力助手,那么Lemonaid很可能就是答案。它是一款专门面向专业音乐人打造的AI音乐生成工具,核心能力在于自主生成包含完整旋律、和声与节奏的乐曲。无论是想要一段氛围感十足的背景音乐,还是为具体场景定制配乐,它都能提供高度逼真且质量上乘的作品。工具提供了

热心网友
04.14
苹果折叠屏iPhone Ultra关键点汇总:这4个问题你肯定想知道
iphone
苹果折叠屏iPhone Ultra关键点汇总:这4个问题你肯定想知道

苹果也要出折叠屏,传闻已经有几年了,从目前供应链、分析师与知名爆料者释放的信息来看,这款与市面大折都不一样的阔折叠似乎已经蓄势待发,大概率今年下半年就要正式面市。今天我们就来为大家汇总一波,没准儿就有你想知道的消息。 关于苹果折叠屏手机的传闻,已经流传了好几年。如今,综合供应链、分析师以及各路知名爆

热心网友
04.14
《刺客信条4:黑旗 重制版》对手来了!被称为4A级海盗大作
游戏评测
《刺客信条4:黑旗 重制版》对手来了!被称为4A级海盗大作

《刺客信条:黑旗重制版》官宣之际,这款新海盗游戏为何能抢先赢得玩家口碑? 当游戏界的焦点都集中在《刺客信条:黑旗重制版》的正式公布时,一款名为《风启之旅》(Windrose)的开放世界海盗生存建造游戏,却凭借其过硬的品质与独特的玩法融合,悄然在玩家社区中掀起热议。这款由乌兹别克斯坦团队Kraken

热心网友
04.14
腾讯智影-智能视频创作与发布一体化平台
AI
腾讯智影-智能视频创作与发布一体化平台

产品介绍 提到云端智能视频创作,腾讯智影是一个绕不开的名字。这款由腾讯推出的平台,本质上是一个一站式的在线视频工厂,集成了从素材挖掘、剪辑、渲染到最终发布的全链路功能,旨在为用户提供全方位的视频创作解决方案。更吸引人的是,它不仅免费开放,还深度整合了多项前沿AI技术,目标很明确:让视频化表达这件事,

热心网友
04.14
比心被拒小哥回应:不尴尬 尊重Coser 大家当个乐子
游戏评测
比心被拒小哥回应:不尴尬 尊重Coser 大家当个乐子

《王者荣耀世界》线下活动风波:合影互动引争议,职业素养与网络舆论深度探讨 近日,《王者荣耀世界》的一场线下玩家见面会,因台上一次短暂的合影互动,意外成为全网热议的焦点。活动中,一位男粉丝上台与角色扮演者(Coser)合影时,主动做出比心手势以示友好,却未得到身旁Coser的任何回应。男生举着手势在原

热心网友
04.14