p2p网络实现(C++)

p2p网络(对等网络):对等网络是一种网络结构的思想。它与目前网络中占据主导地位的客户端/服务器结构的一个本质区别是,整个网络结构中不存在中心节点。在P2P结构中,每一个节点(peer)大都同时具有信息消费者、信息提供者和信息通讯等三方面的功能。从计算模式上来说,P2P打破了传统的C/S模式,在网络中的每个节点的地位都是对等的。每个节点既充当服务器,为其他节点提供服务,同时也享用其他节点提供的服务。

从技术层面讲,p2p网络中每个节点既充当服务端又充当了客户端,同时每个节点需要记录当前网络中所有的节点信息,既可以广播,又可以点对点通信。

要实现上面的特征,每个p2p节点需要有一个服务进程来接收每个节点所发送的数据,这是一个p2p节点所必须的。先看看网络效果图:

 

 

该实现是基于Linux的,服务端使用了epoll模型。当一个节点上线以后,给相邻节点通知上线节点的地址和端口,相邻节点通过广播该信息让网络中的所有在线节点直到,通知返回给上线节点所有节点的地址和端口。实验环境使用的是Linux版本的CLion,这样启动一个节点只需要在左上角的Edit Configurations中配置当前节点的ip和port,是否为初创节点,临近节点,而不用再去使用g++ --...bulabula再去实验。上图启动了8和节点。

需要资源请点击  p2p网络(c++版)下载

需要注意的是:如果在终端中编译好以后需要填写参数:一共有5个参数
 

127.0.0.1 8882 0 127.0.0.1 8881

参数1:127.0.0.1 为当前节点启动的ip

参数2:8882为当前节点启动的端口

参数3:0代表不是初创节点,1为初创节点。初创节点是p2p网络中第一个启动的节点。

参数5:127.0.0.1为临近节点的ip

参数6:8881为临近节点的port

在终端编译注意使用C11标准和pthread线程库。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾文繁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值