python3版本的sebastien boisgerault的python zeroconf库
zeroconf3的Python项目详细描述
ZeroConf服务发现和注册的简单Python接口。 支持python>;=2.7<;=3.5
安装
###要求
zeroconf模块假设[avahi](http://avahi.org/)命令行 可用工具avahi browse和avahi publish。 例如,在ubuntu上,我可以安装:
$ sudo apt-get install avahi-utils
该模块还依赖于[Andrew Moffat的子流程包装器][sh]。安装 使用
$ pip install sh
阅读安装部分有关软件包安装方法的详细信息。
如果使用setup.py或pip安装软件包,它将自动 所以你通常不需要这样做。
[sh]:http://amoffat.github.io/sh
###安装
安装python包有多种方法。 首先,下载源程序包,并将cd下载到其中。
然后您可以直接运行setup.py:
$ python setup.py install
或者使用pip,如果您有pip:
$ pip install .
软件包可以在系统范围内安装(使用sudo):
$ sudo pip install .
在虚拟机上:
$ mkvirtualenv zeroconf $ workon zeroconf $ pip install .
以及用户选项:
$ python setup.py install –user
或
$ pip install –user .
###运行测试
只需运行
$ python setup.py test
它将安装必要的测试依赖项并运行测试。 请注意,Windows上的测试不以这种方式涵盖,应使用
$ py.test –doctest-modules zeroconf/
用法
###ZeroConf服务发现
搜索所有可用的zeroconf服务由
>>> from zeroconf import ZeroConf >>> zc = ZeroConf() >>> services = zc.search()
搜索可以更加具体,例如:
>>> services = zc.search(name=None, type="_workstation._tcp", domain="local")
搜索函数的参数都是可选的:
- name: service name, defaults to None (interpreted as all),
- type: service type, defaults to None (interpreted as all),
- domain: domain name, defaults to “local”.
搜索结果是字典:
>>> print services {('tide [f0:7b:cb:42:ff:e0]', '_workstation._tcp', 'local'): {'txt': '', 'hostname': 'tide.local', 'port': '9', 'address': '192.168.0.13'}, ('wreck [00:26:18:4c:3f:ee]', '_workstation._tcp', 'local'): {'txt': '', 'hostname': 'wreck.local', 'port': '9', 'address': '192.168.0.10'}, ('biohazard [00:18:8b:ac:c8:45]', '_workstation._tcp', 'local'): {'txt': '', 'hostname': 'biohazard.local', 'port': '9', 'address': '192.168.0.12'}}
键是(name,type,domain)元组,值是带有txt的字典, 主机名,端口和地址键。
###ZeroConf服务注册
在本地域中注册新的zeroconf服务,注册地址为:
>>> zc = ZeroConf() >>> zc.register(name="ghost [08:00:27:bf:49:e1]", type="_workstation._tcp", port="9")
完成后,请使用以下命令取消注册:
>>> zc = ZeroConf() >>> zc.unregister(name="ghost [08:00:27:bf:49:e1]", type="_workstation._tcp", port="9")
取消注册的所有参数都是可选的,所以我们可以这样做:
>>> zc = ZeroConf() >>> zc.unregister(name="ghost [08:00:27:bf:49:e1]")
甚至,要注销在python会话期间发布的所有服务:
>>> zc = ZeroConf() >>> zc.unregister()
贡献者
- Sébastien Boisgérault <Sebastien.Boisgerault@mines-paristech.fr>: initial API design, Linux/avahi support.
- Olivier Huynh <olivierv.huynh@free.fr>: Windows/dns-sd support.
- David Francos Cuartero <me@davidfrancos.net>: OOP rewrite, Python3 support