0

我目前正在开发一款基于 Java 的游戏,可以在没有服务器的情况下进行 P2P 游戏。到目前为止,我已经能够让它工作,一个人输入另一个人的 IP,我通过电话得到

InetAddress.getLocalHost().getHostAddress());

但是,这仅适用于同一网络上的两台计算机。如何获得跨网络工作的 IP?谢谢你的帮助!

编辑:这是一个1v1的游戏,所以多个连接不是问题。我打算让用户通过Skype或其他方式发送IP……这只是我想和我的朋友一起使用的东西。前任。它显示 IP,您将其发送给您的朋友,他使用它连接。

4

2 回答 2

1

甚至洪流 P2P 网络也使用服务器来确定对等方的 IP 地址。获得 IP 地址后,连接当然是在对等方之间。所以我建议至少有一个 Web 服务来列出对等方的 IP 地址。(或者您可以将类似 listActivePeers.php/aspx/etc 的文件放到您的网站上,每 5 分钟 ping 一次,然后列出已 ping 过的 IP 地址。)

而且我还想指出,每个对等节点都需要打开与另一个节点的连接,除非你有几个玩家,否则这不是那么有效。如果您有 100 个在线玩家,您最终将为每个对等点建立 100 个连接,有时某些接入点或调制解调器不支持这种活动连接!他们可能会卡住或减速。

此外,您将需要处理大量的并发问题。认为两个数据同时到达两个对等点。在采取任何行动之前,同行需要互相检查“我是否可以采取行动?或者你们中的任何人采取任何行动我应该知道吗?”。因此,在每次移动之前,您将通过向它们发送一些信息来锁定其他对等点,并且它们中的每个人都会在移动之前执行此操作。

更新(来自我上面的评论)
检查此链接以获取您的 IP 地址。https://stackoverflow.com/a/2939223/1216609另外,谷歌搜索“调制解调器端口打开或转发 [您的接入点/调制解调器的品牌/型号]”查询以转发特定于您的调制解调器或路由器的端口。

于 2012-04-08T09:29:14.083 回答
0

这个问题是关于找到你想要的IP:How to get the computer of the computer on linux through Java?

您还需要使用某种端口转发来连接到不同网络上的计算机。

于 2012-04-08T09:20:26.177 回答