使用系统调用的简单pythonic zeroconf实现

simplezeroconf的Python项目详细描述


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

安装

###要求

zeroconf模块假设[avahi](http://avahi.org/)命令行 工具avahi-browseavahi-publish可用。 例如,在ubuntu上,我可以安装:

$ sudo apt-get install avahi-tools

该模块还依赖于[Andrew Moffat的子流程包装器][sh]。安装 使用

$ pip install sh

如果使用setup.py或pip安装软件包,它将自动 所以你通常不需要这样做。

[sh]:http://amoffat.github.io/sh

###安装

下载源发行版并键入:

$ python setup.py install

###运行测试

您需要安装py.test,只需运行:

$ 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")

search函数的所有可选参数是:

  • 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的字典, hostnameportaddress键。

###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")

unregister的所有参数都是可选的,因此我们可以这样做:

>>> zc = ZeroConf()
>>> zc.unregister(name="ghost [08:00:27:bf:49:e1]")

甚至,要注销在python会话期间发布的所有服务:

>>> zc = ZeroConf()
>>> zc.unregister()

贡献者

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

推荐PyPI第三方库


热门话题
playframework Play Framework 2.5表单对象bean(Java)中的依赖项注入   java从javascript触发小程序按钮   JavaGWT:如何创建我自己的异步方法?   对于JTA事务类型,java JPA更改不会持久化   java如何使用预定义的甲板类制作Black Jack游戏   带有数组的java HashMap find()   从Java中的另一个类接收对象数组的参数?   java IntelliJ错误:Scala 145,错误:scalac:找不到Scala编译器JAR   java Eclipse 404请求的资源不可用   java Chuck没有界限   java阅读行每隔一行跳过一行   java如何访问我的EAR部署信息   Java中的正则表达式,其中执行搜索的文本是动态变化的   java我需要优化BigInteger的toString()方法   java Google Map Api V2,自定义路线标记   java如何在Java8中与LocalDate实现更少的需求和更高的质量   EclipseUML插件生成Java源代码   将数据库列绑定到java jComboBox和JList   java如何将两个图像合并为PDF