去中心化技术P2P框架代码示例

 理论学习

​​​​​​去中心化技术P2P框架_p2p 通讯-优快云博客

代码学习地址  

     jbj62/P2P-UDP-demo

程序介绍

一个典型的P2P打洞(UDP hole punching)的过程。让我帮您进一步解释每个步骤:

登录阶段

  • 第一步:客户端登录,服务器记录客户端ID和地址信息
  • 第二步:服务器确认登录,客户端切换到消息状态

P2P连接建立阶段

  • 第三步:客户端A输入命令(C[ID])准备发起P2P连接
  • 第四步:客户端A发送连接请求给服务器,包含自己和目标客户端B的ID
  • 第五步:服务器查表获取双方地址信息
  • 第六步:客户端B收到A的地址信息,发起UDP连接
  • 第七步:客户端A收到连接请求,回复ACK,并切换到P2P状态
  • 第八步:客户端B收到ACK后也切换到P2P状态,P2P通道建立完成

P2P通信阶段(循环进行)

  • 第八步续:P2P模式下的消息发送
  • 第九步:P2P模式下的消息接收和确认
  • 第十步:ACK的处理(简单忽略)

这个流程实现了:

  • 通过中心服务器实现客户端发现
  • 利用UDP打洞技术建立P2P连接
  • 建立连接后直接进行点对点通信,不再经过服务器

这是一个典型的P2P应用架构,类似于早期P2P通信软件的基本实现方式。

 

学习建议: 搜索正则过滤:第[^步]*步

程序流程:
第一步 登录请求 接收到C端id,存入tab表
第二步 登录响应,切换消息状态
【第三步发送消息
第四步 p2p连接,把自己id和p2p id发送给服务器。或不p2p 发送消息】C/S架构循环接发。
第五步 查表,以双方id为索引查出ip,回发。
第六步 接收到p2p方ip 进行udp连接
第七步 接收到p2p连接请求,回发 NTY_PROTO_P2P_CONNECT_ACK 一方切换成p2p消息状态
【第八步 双方切换成p2p消息状态,消息发送
第九步:P2P模式消息接收,进行ack回复】P2P成功后循环接收
第十步ack不处理

 

学习资料分享



0voice · GitHub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值