2013-05-01 66 views
1

我正在制作一个不错的多人游戏应用程序,但是我希望我的应用程序可以在您的lan中搜索主机。我知道你可以很容易地获得你自己的IP,然后暴力破解所有的IP来查看是否有任何连接,但是这对你的计算机来说都是非常困难的工作,即使你正确地多线程处理也需要一段时间。获取所有本地ip的(arp -a)

似乎没有好的方法来获得Java中的ARP表,但我希望有类似的地方,你可以快速,高效地获得所有本地IP地址。

任何帮助将不胜感激。

+0

入住此... http://stackoverflow.com/questions/1238963/query-arp-cache-to-get-mac-id – SmV 2013-05-01 21:06:48

+0

感谢反应。我不是像他那样寻找MAC地址,而是寻找ip地址,所以我希望有人能以另一种方式帮助我。 – 2013-05-01 21:15:49

回答

0

存在几个选项,可用于实现此目的。

分散化的一个

你可以做的是broadcasting从您的应用程序的请求,要求网络上的每台主机,如果他们是目前可用于游戏(发送上255.255.255.255为实例的请求时,会引起您的路由器重新发送您发送给LAN上每个主机的数据报)。

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

现在几种广播协议在局域网上大量使用。其中之一是SSDP (Simple Service Discovery Protocol),它与UPnP协议一起用于服务发现。尽管如此,对于多人游戏来说,通过广播/多播使用肯定有更好的协议。

集中一个

一个发现一个多人游戏玩家最常见的方式保持在一个中央服务器的存在对其中两个请求者(谁正在寻找一个游戏的人)和主持人(主持游戏的人)已连接。

该方法的缺点是具有单点故障,即服务器,但与分散式解决方案不同的是,它既适用于局域网也适用于互联网(或每种基于IP的协议)。

如果我不得不开发一款多人游戏,那么我将开始挖掘您需要实现的主机发现功能。