C++ 允许人们在没有端口转发的情况下托管自己的多人游戏?

C++ 允许人们在没有端口转发的情况下托管自己的多人游戏?,c++,port,multiplayer,steam,C++,Port,Multiplayer,Steam,现在Steam上有很多游戏(桌面模拟器、SpeedRunners),允许人们在不需要端口转发的情况下主持自己的在线多人比赛/游戏 我想到的一件事是,他们只是拥有一台服务器,将所有匹配作为单独的线程进行处理 但我开始怀疑自己是否会被瓶颈束缚 然后,我听说这些游戏只是以某种方式允许TCP通过其NAT,从而克服了端口转发的需要 但是,在C++中,使用Winsock,你会怎么做呢?还是游戏制作人:工作室?或者只是一般的游戏?您如何允许人们在没有端口转发的情况下进行游戏?过程是什么 我在Steam上看到这

现在Steam上有很多游戏(桌面模拟器、SpeedRunners),允许人们在不需要端口转发的情况下主持自己的在线多人比赛/游戏

我想到的一件事是,他们只是拥有一台服务器,将所有匹配作为单独的线程进行处理

但我开始怀疑自己是否会被瓶颈束缚

然后,我听说这些游戏只是以某种方式允许TCP通过其NAT,从而克服了端口转发的需要

<>但是,在C++中,使用Winsock,你会怎么做呢?还是游戏制作人:工作室?或者只是一般的游戏?您如何允许人们在没有端口转发的情况下进行游戏?过程是什么


我在Steam上看到这么多的游戏,现在一定不会太复杂。

可以使用UPnP自动配置路由器来进行端口转发。在学校里有一个图书馆


另一种方法是让一个外部服务器管理所有流量,这样每个人都可以连接到那里,从而避免nat问题。

由于这个问题与steam有明确的关系,我认为值得一提的是steamworks API,特别是SteamNetworking。它允许通过steam服务器进行对等连接中继:

允许或不允许P2P连接退回到中继状态 如果是直接连接或NAT穿越,则通过Steam服务器 无法确定


“我在Steam上看到了这么多的游戏,现在它一定不会太复杂。”一个游戏如何暗示另一个呢?游戏实际上会自动配置路由器上的端口转发吗?有没有人知道有什么游戏能做到这一点,因为那真的很有趣。另外,对于第二种选择,外部服务器不是有很多带宽,必须在一台服务器上托管大量匹配项吗?此外,当游戏在路由器上配置端口转发时,它是否会永久保留?还是在游戏运行时是临时的?“游戏是否会在路由器上自动配置端口转发?”-是的,主要是在你主持游戏时。Skype、一些torrent客户端也是使用此技术的应用程序的示例。“另外,对于第二种选择,外部服务器是否有大量带宽,必须在一台服务器中托管大量匹配项?”-是的。“此外,当游戏在路由器上配置端口转发时,它是否会永久保留?”-如果你已经计划单独使用Steam,那么这是一个暂时的东西,非常有用,但可能不会在移动设备上发生
bool AllowP2PPacketRelay( bool bAllow );