如何解决拥有中央服务器如何绕过 NAT 之类的事情
我正在尝试开发一个小型多人游戏,并且我已经阅读了很多关于 NAT 如何使 P2P 变得不可能的文章。 另一方面,我已经阅读了很多看起来像这样的服务器代码:
https://docs.python.org/3/library/asyncio-protocol.html#udp-echo-server
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 地址与客户端通信。 同样this stackoverflow question
那么我在这里缺少什么 - 有没有另一种方法来编写 UDP 发送调用,或者让它们坐在服务器上自动神奇地解决 NAT?
解决方法
关键部分是这个:client.Connect(ep);
。客户端是打开与服务器的连接的那个。如果建立了连接,客户端的路由器就知道将传入的数据包通过公共端口路由到何处。
只有一台服务器并不能解决 NAT 问题。会存在与 P2P 相同的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。