node.js实现p2p网络

理论部分

首先,我们要明白p2p要如何实现
举个例子,
在这里插入图片描述

看这张图,就比如我有3快机器

1机器开放6001端口
2机器的34394端口链接着6001端口,并且2机器开着6002端口,
3机器的36460端口链接着6002端口,并且3机器开着6003端口

那么现在是如何记录的呢?

先看1机器,当有端口和1机器的端口相连时,node.js是可以获取到链接过来的机器的端口号的,而向1机器链接的这个34394端口,他是随机分配的.

所以我们可以知道:
1机器里存有2机器链接的端口号:
2机器存有1机器接受的端口号3机器链接的端口号:
3机器存有2机器接受的端口号

那么,我们如何实现传输数据,我们可以从3机器通过存储的2机器接受的端口号发送给2机器,然后为了防止2机器发回来的数据又被接受,我们可以拒绝2机器返回的信息

然后同理,2机器通过接受到3机器发送的数据,遍历2机器自身存储的端口号,把消息传递给1机器,同时拒绝1机器的返回信息

这样我们就可以实现一个简单的p2p通信
话不多说直接代码

代码部分

直接发我的github上的内容,其中test3就是我自己使用的node.js实现p2p网络.
https://github.com/feige011/p2pnetwork

使用例子
开3个窗口先进入其test3.js的目录然后分别依次输入

 HTTP_PORT=3001 FFF_PORT=6001 node test3.js
 HTTP_PORT=3002 FFF_PORT=6002 node test3.js
  HTTP_PORT=3003 FFF_PORT=6003 node test3.js

由于我的设计就是自动链接port小1的端口(为了操作方便),所以第一个输入他会告诉你链接失败,因为你没开6000端口,不用理他.后两个就可以成功链接,
然后在第3窗口打字,就会发现传输到2,1中
如果你在1窗口打字,发现2有内容出现是正常的,因为这个是我自己设计说拒绝他返回信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值