拥有一个中央服务器是如何规避NAT之类的问题的



我正在尝试开发一款小型多人游戏,我读了很多关于NAT如何使P2P变得不可能的文章。另一方面,我读了很多服务器代码,看起来像:

https://docs.python.org/3/library/asyncio-protocol.html#udp-回波服务器

def datagram_received(self, data, addr):
message = data.decode()
print('Received %r from %s' % (message, addr))
print('Send %r to %s' % (message, addr))
self.transport.sendto(data, addr)

在上面的代码中,服务器仅使用普通IP地址与客户端进行通信。类似地,这个stackoverflow问题

那么,我在这里错过了什么——有没有其他方法可以编写UDP发送调用,或者让它们位于服务器上自动神奇地解决NAT问题?

关键部分是这个:client.Connect(ep);。客户端是打开与服务器连接的客户端。如果建立了连接,客户端的路由器就知道通过公共端口将传入的数据包路由到哪里

只有一台服务器并不能解决NAT问题。与P2P同样的问题也会存在。

最新更新