对于我制作的小型java游戏,我希望能够在同一个(家庭)网络中使用两台计算机进行游戏。我想我会使用RMI,现在正在尝试使用ipaddress 192.168.2.3上的计算机。 我知道我可以在192.168.2.6的其他计算机上搜索此ipaddress上的注册表,但我想显示我的计算机所连接的网络中所有ipaddresses的列表。只有当他们真正主持比赛时才有可能。
现在我在stackoverflow上尝试了一些问题:
,但我认为我不需要所有的计算机网络接口,InetAddress.isReachable()似乎总是导致错误(即使我可以通过cmd ping并且我已关闭防火墙)并调用命令行
“ping -n 1 192.168.2.i”for all i,其中0< = i< = 255,
始终退出正常,因此始终为真。
在与运行JVM的计算机相同的网络中获取计算机的ipaddresses列表的最佳方法是什么?
答案 0 :(得分:2)
使用链接的答案,您应该能够将可用的接口过滤到几个可能的选项(即,启用的接口,没有环回,具有IPv4地址等)。
要发现游戏主机,您可以执行以下操作。
getBroadcast()
中的InterfaceAddress
确定。DatagramPacket
中。使用TCP时,可以从Socket
确定主机IP。编辑:我找到了this blog post,其中包含的代码与我所描述的内容差不多。