【问题标题】:Any issues with the System.Net.PeerToPeer library?System.Net.PeerToPeer 库有任何问题吗?
【发布时间】:2010-12-30 22:58:01
【问题描述】:
我一直在研究 .NET 4.0 中 System.Net.PeerToPeer 的命名空间,这个库中提供的类似乎对于构建 P2P 网络相当不错。但是,当我搜索示例和参考资料时,我只能找到旧的过时示例或仅指向 MSDN 文档的参考资料。似乎没有太多人在使用这个库,而且这个产品也没有太多的努力。有谁知道我不知道的这个库的问题,这可能会说服我不要使用它?我确实看到旧版本的 Windows 不支持它,但这对我来说不是一个显示停止器。还有别的事吗?
【问题讨论】:
标签:
c#
.net
networking
p2p
【解决方案1】:
我不得不不同意之前的答案。
虽然 .NET 中内置的 P2P 机制确实使用 PNRP,但在线有限的示例更多地与开发人员的无知有关,而不是任何网络限制。
我使用对等通道/netPeerTcpBinding 开发了一个非常复杂的 P2P 应用程序。此应用程序在 Windows XP SP3 或更高版本上运行几乎没有问题,并且可以通过 Internet 运行。
在 XP SP3+ 上默认安装并启用 IPv6,PNRP 所需的所有其他组件也是如此。这意味着您可能有 95% 的潜在安装基础已经具备您的应用程序的所有先决条件。
是的,本地机器需要畅通某些端口,但这可以由您的安装程序轻松完成。网络基础设施本身只需要不显式阻止 Teredo,它通过 UDP 端口 3544 运行。PNRP 版本 2 (XP SP3+) 适用于所有 NAT 变体。
只要满足这些条件,您就可以相当轻松地在公共互联网上设置 P2P 网格,而无需更改您现有的网络基础设施。
【解决方案2】:
此 API 基于 PNRP。它需要 IPv6 连接(至少通过 Teredo);这在今天的安装中通常是不可用的,并且需要管理工作来设置它。我相信这就是人们对它的兴趣如此之少的主要原因。