TCP P2P无服务器

8

是否有可能编写无需服务器的TCP P2P程序?当我在谷歌上搜索这个问题时,我发现了一些关于NAT穿透、UPnP的内容,我能用它们来做什么吗?


请查看SignalR https://www.asp.net/signalr - NoWar
2个回答

11

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

如果你不能使用中间盒(公共IP地址上的服务器,客户端连接到其中(*))- 你可能不想要这些,因为它们与P2P的目的相反 - 并且你不介意用SDP描述你的连接细节,那么你可以尝试Interactive Connectivity Establishment

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

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


4
这取决于您所说的“服务器”的意思。您并不需要任何中心化的服务器。从其定义上来说,“p2p”这个术语意味着没有集中式的服务器。
但是接收来自其他应用程序的数据的应用程序需要能够监听传入的TCP / IP连接……即使您没有将其称为“服务器”,通常也会被认为具有“服务器”功能。因此,在您的情况下,您的p2p应用程序需要同时具备客户端(发起连接)和服务器功能。

1
没错,我的观点是用户不需要外部IP。这可行吗? - user380798
1
他们的机器不需要外部可寻址IP,也就是它们可以在本地网络上。但是他们的路由器/调制解调器——实际连接到互联网的设备——将拥有外部可寻址IP地址,并需设置端口转发。这可以手动完成或通过UPnP完成。 - GrandmasterB

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