是否有可能编写无需服务器的TCP P2P程序?当我在谷歌上搜索这个问题时,我发现了一些关于NAT穿透、UPnP的内容,我能用它们来做什么吗?
是否有可能编写无需服务器的TCP P2P程序?当我在谷歌上搜索这个问题时,我发现了一些关于NAT穿透、UPnP的内容,我能用它们来做什么吗?
是的,你可以这样做(正如GrandmasterB所指出的,每个对等方都有服务器和客户端套接字)。然而,NAT会给你带来痛苦,就像你可能已经知道的那样。
如果你不能使用中间盒(公共IP地址上的服务器,客户端连接到其中(*))- 你可能不想要这些,因为它们与P2P的目的相反 - 并且你不介意用SDP描述你的连接细节,那么你可以尝试Interactive Connectivity Establishment。
基本上,ICE尝试不同的策略来连接。它是一个可插拔的架构,因此你可以添加自己的自定义策略。默认情况下,ICE描述了UDP穿越技术,但正在开发一种扩展以允许TCP连接。
(*) 您可以尝试像IRC一样的架构,其中有任意数量的服务器相互连接,客户端连接到这些服务器。至少这是P2P的一半。 (这也几乎是SIP使用的架构。)