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 Android HttpClient cookies   如何使用Java在远程系统上运行SSH命令?   java从字符串数组中的字符串末尾删除“,”   在One plus 3t手机上,当应用程序被终止或从最近的应用程序中刷出时,java Android FCM推送通知不起作用   java如何使垂直滚动条始终位于jtable的末尾   在java中解析迄今为止“未知”的字符串   javascript在Java中获取Nashorn JsonObject   java windows 10和ubuntu可以使用相同的JDK吗?   java在不同的文件中记录不同的日志。但所有日志都放在同一个文件中   具有特定jdk的java Gradle构建项目   xml Java web服务生成错误响应   javascript Jaggery文件更改不显示   java输出二进制搜索树数组   将BufferedReader解析为JSON对象时,java在位置处意外标记文件结尾