我同意塞尔比在上述评论中的建议。
简短的回答是,要进行点对点网络,您应该对您提到的所有技术有基本的了解。
我必须处理防火墙混乱吗?
如果对等点位于 NAT 之后,您将需要处理 NAT 穿越。
我必须设置端口转发吗?
你一定要吗”?不,但是您可以将其视为解决问题的方法。端口转发是一种配置防火墙的方法,以便您的对等方有效地进行通信,就好像他们不在防火墙后面一样。这意味着您可以像没有防火墙一样编写软件。NAT 打孔是手动端口转发的替代方案。您可以将其视为“自动端口转发”。
我需要 JXTA 或 JGroups 吗?
对不起。我不知道这些是什么。
UPNP 是我需要研究的吗?
UPnP 是一种可能的 NAT 穿越策略:
http://en.wikipedia.org/wiki/Universal_Plug_and_Play#NAT_traversal
请注意,已知 UPnP 是不安全的,可能不应启用,请参见例如:
http://www.zdnet.com/how-to-fix-the-upnp-security-holes-7000010584/
我的印象是,UPnP 不是最重要的 NAT 穿越技术,但它可能是一种有用的技术,可以实现更高的兼容性(即作为 STUN 失败的后备)。
UDP打孔是我应该研究的吗?
您将需要一个 NAT 遍历策略。UDP Hole Punching(STUN 等)就是这样一种策略,正如 selbie 所说,这是一种常见的策略。还有无服务器技术(查看 SubEthaEdit 使用的机制)。
完整的 NAT 遍历堆栈可能需要采用多种方法来最大程度地兼容不同的路由器/防火墙。