python3版本的sebastien boisgerault的python zeroconf库

zeroconf3的Python项目详细描述


ZeroConf服务发现和注册的简单Python接口。 支持python>;=2.7<;=3.5

安装

###要求

zeroconf模块假设[avahi](http://avahi.org/)命令行 可用工具avahi browseavahi 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()

贡献者

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
图形Java仿射变换以旋转通用路径   IntelliJ IDEA中的java代码标记为编译器错误,在Eclipse中可以正常工作   java ArrayList的containsAll返回了错误的值   如何在安卓中的片段活动中添加java代码   java通过使用netbeans调用jbutton,将带有行的jbutton添加到jtable中   java在更新arrayAdapter/listView之前更新最终列表   java如何在另一个项目中导入包含AspectJ方面和注释的项目   为什么我的java布尔测试总是失败?   Eclipse中的java自动激活   在Bluetooth for Java(更具体地说是Android)之上是否有TCP/IP协议栈实现?   java Android Studio通过intent传递ArrayList并填充ListView