码迷,mamicode.com
首页 > 其他好文 > 详细

实现upnp ssdp来查找局域网内的其他节点

时间:2018-11-24 11:38:33      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:检测   一个   monk   pip   upnp   程序   pypi   python程序   pytho   

upnp协议常用于一些智能家居产品中,这些产品连上家里局域网后,用同样连入家中局域网的手机就能很快检测到此产品了。在区块链技术中,upnp也被应用于寻找同一局域网内的其他节点。

 

关于upnp的具体描述,这篇文章有很好的介绍,Exploring UPnP with Python,欢迎移步查看。我在这里粗略的介绍下。upnp里面有好几种具体的实现方式,这里介绍下用的最多的ssdp。ssdp一般有服务器端和客户端。服务器端会使用udp监听端口1900的广播信息,如果信息里面有“M-SEARCH”开头的字段,就会回复自己的产品信息,也就是被找到了。而客户端程序就会在局域网内发送端口1900的udp广播信息,来寻找服务器。具体到区块链中,一个节点实例既运行ssdp的服务器程序,也运行ssdp的客户端程序,这样这个节点既能找到局域网内的其他节点,也能被其他节点找到。

 

我根据文章实现了一个ssdp的python程序,tw7613781/ssdp_upnp,也上传到了pypi,大家使用下面命令就能按照包文件,使用这个程序。考虑到他们是会阻塞线程的,在具体实现的时候,我让这两个class都继承了thread.Threading类,让他俩跑到自己的子线程去,然后使用线程安全的python内置queue来通信。既客户端类找到其他节点后把节点ip,port信息写到queue里,然后主线程能在queue读到这个信息,然后进行自己的业务逻辑。

pip install ssdp-upnp

实现upnp ssdp来查找局域网内的其他节点

标签:检测   一个   monk   pip   upnp   程序   pypi   python程序   pytho   

原文地址:https://www.cnblogs.com/wtang/p/10010537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!