C++的P2P库

36

有没有适用于P2P网络的良好跨平台C++库(最好是UDP,但TCP也可以使用)?最初我打算使用libjingle,但由于他们不提供任何预编译库,并且构建系统非常混乱,因此我目前把它放在了一边,认为它太复杂了。


4
P2P网络是什么意思?你想要实现什么样的通信?是文件传输、聊天、语音还是视频?这是点对点还是点对多点通信? - Zuljin
从我的经验来看,我至少可以告诉大家要远离_enet_,因为它非常容易出现错误。 - abergmeier
2
ProudNet还提供P2P网络,包括打洞和中继。功能包括远程过程调用、类似UDP和TCP的消息传递、加密、压缩等。 - Hyunjik Bae
5个回答

25

libtorrent.org 建立在boost的基础之上,boost-asio是一个适用于P2P工作的库。它实现了BitTorrent协议,使用TCP传输数据,使用TCP/UDP进行节点间交换。


@LCID 火:将此标记为正确答案? - favadi
1
libtorrent/BitTorrent可以用作通用的P2P网络库/协议吗? - Erik Kaplun
@ErikAllik libtorrent 不是设计成一个通用的 P2P 网络库,但你可以通过它来学习。 - secmask
1
但问题不是关于P2P吗?如果libtorrent可以更普遍地使用而不仅仅是用于文件共享,那就太好了。 - Erik Kaplun

10

4

我们的一个可能的选择是使用MsgConnect产品。该产品提供开源许可证。


1
现在没有开源GitHub仓库的软件,从某种程度上开始感觉不像是真正的软件了 :) - Erik Kaplun

2

libjingle编译可能会比较麻烦,但它非常强大,api也相当直观易懂,示例应用程序有助于您更好地学习和理解它。


1
坡道似乎过高不必要。 - abergmeier

0

Tribler.org:

它是一个跨平台的P2P客户端,但同时也提供其开源API。 它实现了许多非标准功能,如P2P视频流媒体、DHT、Merkle哈希、repex、NAT和防火墙穿透等。

它的引擎是欧洲创立的视频流媒体项目p2p-next的一部分。

不幸的是,它是用Python编写的,但你可以将它包装在C++中, 甚至可以从Python生成C++库。

或者:libswift


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接