Networking 无服务器的TCP-P2P

Networking 无服务器的TCP-P2P,networking,tcp,p2p,upnp,Networking,Tcp,P2p,Upnp,是否可以在没有服务器的情况下编写TCP P2P程序? 当我在谷歌上搜索这个问题时,我发现了一些关于NAT遍历的东西,UPnP,我可以用它们吗?这取决于你所说的“服务器”是什么意思。您无论如何都不需要集中式服务器。“p2p”一词的定义意味着没有集中式服务器 但是从其他应用程序接收数据的应用程序需要能够侦听传入的tcp/ip连接。。。这通常被认为是“服务器”功能,即使你不把它称为“服务器”。因此,在您的情况下,您的p2p应用程序需要内置服务器和客户端(启动连接)功能。是的,您可以(正如Grandma

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

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

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

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

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

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


(*)您可以尝试IRC这样的体系结构,在这种体系结构中,您可以有任意数量的服务器相互窥视,客户端可以连接到这些服务器。这至少是P2P的一半。(这也是架构所使用的。)

这是正确的,我的观点是用户不需要外部ip。可能吗?他们的机器不需要外部可寻址的IP。也就是说,它们可以在本地网络上。但是他们的路由器/调制解调器——实际上连接到互联网的部件——将具有外部可寻址的IP地址。它们只需设置为转发端口。这可以手动完成,也可以通过UPnP完成。看看信号机