Java 如何列出网络中的所有计算机?

Java 如何列出网络中的所有计算机?,java,networking,rmi,Java,Networking,Rmi,对于我制作的一个小java游戏,我希望能够在同一(家庭)网络中的两台计算机上玩它。我想我会使用RMI,现在正在尝试使用IPAddress192.168.2.3上的计算机。 我知道我可以在192.168.2.6的另一台计算机上搜索此IP地址的注册表,但我想显示计算机所连接网络中所有IP地址的列表。除非他们真的举办了一场比赛 现在我在stackoverflow上尝试了一些问题: ,但我不认为我需要所有的计算机网络接口和InetAddress。isReachable()似乎总是导致fals

对于我制作的一个小java游戏,我希望能够在同一(家庭)网络中的两台计算机上玩它。我想我会使用RMI,现在正在尝试使用IPAddress192.168.2.3上的计算机。 我知道我可以在192.168.2.6的另一台计算机上搜索此IP地址的注册表,但我想显示计算机所连接网络中所有IP地址的列表。除非他们真的举办了一场比赛

现在我在stackoverflow上尝试了一些问题:

,但我不认为我需要所有的计算机网络接口和InetAddress。isReachable()似乎总是导致false(即使我可以通过cmd ping并关闭防火墙)和调用命令行


“ping-n1192.168.2.i”对于所有i,其中0与链接的答案,您应该能够将可用的接口过滤到几个可能的选项(即,启动的接口、无环回的接口、具有IPv4地址的接口等)

要查找游戏主机,可以执行以下操作

  • 让游戏主机在特定端口上侦听UDP广播
  • 让客户端从上面向其余每个接口的广播地址发送UDP广播。广播地址可以通过类
    接口地址
    中的
    getBroadcast()
    确定
  • 主机回复,让客户端知道它正在等待。使用UDP时,主机IP位于收到的
    数据包中。使用TCP时,可以通过
    套接字
    确定主机IP
  • 然后,客户端可以使用主机的地址建立直接连接和/或设置RMI

编辑:我找到了,其中包含的代码与我描述的差不多。

我有点困惑。我以为接口只提供当前计算机的IP地址,但在你的第二个项目中,你暗示我可以获得其他计算机的IP地址。你能给出一个(链接到)示例来说明我如何获得其他计算机的IP地址吗?@LiontackLightning不,它没有。它说发送到NIC的广播地址。NIC仍然是本地的。@LiontackLightning您可以从本地接口获取广播地址。广播到达网络上的所有计算机。你不需要知道具体的目的地地址。我更新了我的帖子,并添加了一个示例链接。@普罗米修斯我现在可以通过的广播地址始终是“192.168.2.254”,即路由器。但在一台笔记本电脑上,广播地址是“0.0.0.0”,而这台笔记本电脑找不到任何服务器。我找不到这台笔记本电脑的补丁。你对此有什么建议吗?我只能说这些不是广播地址。它们是通过getBroadcast()方法返回的吗?没有代码很难说出什么地方出了问题。