python p2p"/>
python p2p
MAR
6TH, 2014
Python实现STUN+TURN+P2P聊天
作为技术验证,最近实现了一下NAT穿透,并在此基础上完成了P2P聊天的客户端(虽然只能在命令行中打字)。理论上能不论电脑处于何种类型NAT设备后,均可以实现P2P聊天。代码和使用方法参见
这篇文章主要(简单)介绍一下必要的背景知识和原理,github上已有的内容就不再说明。
什么是NAT穿透?
什么是STUN, TURN?
如何实现NAT穿透?
喂这就算介绍完了吗(╯‵□′)╯︵┻━┻
咳咳,总之原理部分就这样吧
PyPunchP2P工作流程
PART ONE: 连接
假定你已经运行了server.py,并让其监听1234这个端口。客户端A首先会通过从pystun里面弄出来的那部分代码检测自己的NAT类型
nat_type, _, _ = self.get_nat_type()
然后通知服务器端,发起连接请求,同时告知服务器自己的NAT类型。client.py的第三个参数是pool值,这个值是用来匹配客户端用的。如果说两个发起连接的客户端有一样的pool值,那么就认为它们是希望通信的客户端。指定的pool值也会发送给服务器。
self.request_for_connection(nat_type_id=NATTYPE.index(nat_type))
其中
NATTYPE = (FullCone, RestrictNAT, RestrictPortNAT, SymmetricNA
更多推荐
python p2p
发布评论