我正在创建一个不错的多人游戏应用程序,但我希望我的应用程序能够搜索你的主机。我知道你可以很容易地获得自己的IP,然后强制所有的IP来查看是否有任何连接,但这对你的计算机来说都是非常困难的工作,即使你正确地多线程也需要一些时间。
似乎没有好的方法来获取java中的arp表,但我希望有类似的地方可以快速有效地获取所有本地IP地址。
非常感谢任何帮助。
答案 0 :(得分:1)
存在多种选择,可以用来实现这一目标。
分散的
您可以做的是broadcasting来自您的应用程序的请求,该请求询问网络上的每个主机当前是否可用于游戏(例如,在255.255.255.255
上发送请求)将导致您的路由器重新发送您发送到LAN上每个主机的数据报。
这将确保只有已启动游戏并准备播放的主机才会响应此请求。
目前,在LAN上大量使用了几种广播协议。其中一个是SSDP (Simple Service Discovery Protocol),它与UPnP协议一起用于服务发现。当然,对于多人游戏而言,广播/多播使用的协议肯定更合适。
集中的
在多人游戏中发现玩家的最常见方法之一仍然是存在中央服务器,请求者(正在寻找游戏的人)和主机> (主持游戏的人)已连接。
这种方法的缺点是具有单点故障,即服务器,但与分散式解决方案不同,它具有适用于LAN和Internet(或每个基于IP的协议)的优点。 / p>
如果我必须开发多人游戏,那么我将开始挖掘您需要实施的主机发现功能。