5

是否可以在没有服务器的情况下编写 TCP P2P 程序?当我在谷歌上搜索这个问题时,我发现了一些关于 NAT 遍历,UPnP,我可以以某种方式使用它们吗?

4

2 回答 2

7

是的,你可以(正如 GrandmasterB 指出的那样,每个对等点都有服务器和客户端套接字)。但是,正如您可能已经知道的那样,NAT 会给您带来痛苦。

如果您不能使用中间盒(您的客户端连接到的公共 IP 地址上的服务器 (*)) - 您可能不想要这些,因为它们与 P2P 的观点相反 - 而且您不介意描述您的与SDP的连接详细信息,您可以尝试交互式连接建立

本质上,ICE 尝试了不同的连接策略。这是一个可插拔的架构,因此您可以添加自己的自定义策略。默认情况下,ICE 描述了 UDP 遍历的技术,但允许 TCP 连接的扩展正在开发中。

(*) 你总是可以尝试像 IRC 这样的架构,其中你有任意数量的服务器相互对等,客户端连接到这些服务器。这至少是 P2P 的一半。(这也是SIP使用的架构。)

于 2010-08-03T09:39:27.187 回答
2

这真的取决于你所说的“服务器”是什么意思。无论如何,您都不需要集中式服务器。根据其定义,术语“p2p”意味着没有集中式服务器。

但是从其他应用程序接收数据的应用程序需要能够侦听传入的 tcp/ip 连接……这通常被认为是“服务器”功能,即使您没有将其称为“服务器”。因此,在您的情况下,您的 p2p 应用程序需要内置服务器和客户端(启动连接)功能。

于 2010-08-02T21:48:15.940 回答