是否有可能在没有服务器的情况下编写TCP P2P程序?当我在Google上搜索这个问题时,我发现了一些关于NAT遍历的内容,UPnP,我能以某种方式使用它们吗?
是的,你可以(在GrandmasterB指出的地方,每个对等体都有服务器和客户端套接字).但是,正如您可能已经知道的那样,NAT会让您感到痛苦.
如果你不能使用中间件(客户端连接的公共IP地址上的服务器(*)) - 你可能不想要这些,因为它们与P2P的观点相反 - 你不介意描述你的有关SDP的连接详细信息,您可以尝试使用Interactive Connectivity Establishment.
从本质上讲,ICE尝试不同的连接策略.它是一个可插拔的架构,因此您可以添加自己的自定义策略.默认情况下,ICE描述了UDP遍历的技术,但允许TCP连接的扩展正在进行中.
(*)您可以随时尝试像IRC这样的体系结构,在这种体系结构中,您可以在任意数量的服务器之间进行连接.这至少是P2P的一半.(这也是SIP使用的架构.)