得到所有本地IP(arp -a)

时间:2013-05-01 21:05:18

标签: java lan

我正在创建一个不错的多人游戏应用程序,但我希望我的应用程序能够搜索你的主机。我知道你可以很容易地获得自己的IP,然后强制所有的IP来查看是否有任何连接,但这对你的计算机来说都是非常困难的工作,即使你正确地多线程也需要一些时间。

似乎没有好的方法来获取java中的arp表,但我希望有类似的地方可以快速有效地获取所有本地IP地址。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

存在多种选择,可以用来实现这一目标。

分散的

您可以做的是broadcasting来自您的应用程序的请求,该请求询问网络上的每个主机当前是否可用于游戏(例如,在255.255.255.255上发送请求)将导致您的路由器重新发送您发送到LAN上每个主机的数据报。

这将确保只有已启动游戏并准备播放的主机才会响应此请求。

目前,在LAN上大量使用了几种广播协议。其中一个是SSDP (Simple Service Discovery Protocol),它与UPnP协议一起用于服务发现。当然,对于多人游戏而言,广播/多播使用的协议肯定更合适。

集中的

在多人游戏中发现玩家的最常见方法之一仍然是存在中央服务器,请求者(正在寻找游戏的人)和主机 (主持游戏的人)已连接。

这种方法的缺点是具有单点故障,即服务器,但与分散式解决方案不同,它具有适用于LAN和Internet(或每个基于IP的协议)的优点。 / p>

如果我必须开发多人游戏,那么我将开始挖掘您需要实施的主机发现功能。