使用系统调用的简单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第三方库


热门话题
无JPA的纯Hibernate ORM java SpringBoot配置   安卓会生成一组唯一的java数字   java我的自定义阵列列表每次启动时都会崩溃我不确定为什么会一直崩溃   Java继承;将子类传递给超类的抽象方法   java从没有if语句的数组中获取instanceof type   java中使用对象的温度转换   存储库接口的JavaSpringDataMongoDBeanXML配置   java JAXWS为iBM websphere、iBM web服务客户端添加寻址   数组试图返回Java中两个对象的面积之和   apache Spark java:columnNameOfCorruptRecord和badRecordsPath在加载csv时不工作   java无法创建。txt文件   java Hibernate与MySQL插入查询不一致   不考虑java Hazelcast分布式地图的最大大小   bash Java如何在父进程中设置环境变量