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個參數
?
參數1:127.0.0.1 為當前節點啟動的ip
參數2:8882為當前節點啟動的端口
參數3:0代表不是初創節點,1為初創節點。初創節點是p2p網絡中第一個啟動的節點。
參數5:127.0.0.1為臨近節點的ip
參數6:8881為臨近節點的port
在終端編譯注意使用C11標準和pthread線程庫。
?
總結
以上是生活随笔為你收集整理的p2p网络实现(C++)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P2P对等网络技术原理整合
- 下一篇: T48566 【zzy】yyy点餐