2

我目前正在使用 libgdx graphics api 和 kryonet api 为所有服务器客户端网络开发一个 android 多人游戏(一对一战斗)。如果您可能不知道,libgdx 是一个用于游戏开发的开源 Java api。Kryonet 是一个独立的网络 api,适用于游戏 pc、android 和 linux 。到目前为止一切顺利,... 做了一个服务器,两个客户端作为玩家。

我尝试在 pc 中运行服务器和客户端。它的工作。然后我尝试在 pc 上运行服务器并在 android 手机上运行播放器客户端。它的工作。

但是......当我将我的安卓手机用作服务器时,问题就发生了。我的客户端程序无法发现 android 服务器。我什至确保我使用了来自 whatsmyip.com 的手机 IP。但我的 android 服务器仍然是不可见的。我确保我使用互联网权限正确设置了清单。

由于其 mobild ip,甚至可以将 android 手机作为服务器运行吗?我非常需要完成这项工作,以便不需要中央服务器。玩家可以简单地以 p2p 方式进行游戏,其中一个玩家启动服务器,而另一个玩家只是加入服务器玩家。

4

1 回答 1

1

我有一个类似的问题。我假设您尝试使用移动网络连接。问题是您的手机可能位于一组防火墙后面。我已经研究了可用于克服该问题的不同解决方案。

问题是您看到的外部 IP 地址作为您的电话 IP 地址不是“真实”地址。这是许多移动设备都通过的网关。网关使用一种称为NAT 表的技术来决定到达该 IP 地址的流量属于您的设备。网关接收到的任何它不期望它通常忽略的流量。 这篇文章很好地概述了这些问题。

有一些方法可以解决这个问题,看看不同的打孔方法(STUN ...)。

我尝试了几种不同的方法来解决这个问题,但最后我不得不考虑使用中继服务器。我使用了 Amazon Web Service (AWS),它提供免费套餐,可以让您的应用正常运行。让你开始会很好,我一直在用它来中继消息。

希望这可以帮助。

于 2013-11-25T18:40:09.970 回答