gpt4 book ai didi

java - 获取网络上可用计算机的 IP 地址? -java

转载 作者:行者123 更新时间:2023-11-29 03:54:20 25 4
gpt4 key购买 nike

我正在制作一个文件共享应用程序,它会查找在同一网络上运行该应用程序的计算机。所以我希望我的应用程序能够发现计算机及其 IP 地址。使用 Java 可以完成此任务吗?

谢谢

最佳答案

这是分布式计算中的基本问题之一,有两种方法在一定程度上可行:

注册服务

  • 在网络上的某处,您使用众所周知的主机和端口号运行注册服务。此服务必须可以从您要运行应用程序的每个地方访问/寻址。

  • 启动时,网络上的每个应用程序实例都会在注册表中注册。

  • 当某些机器/程序需要定位应用程序的实例时,它会询问注册表。

问题:

  • 您必须处理在不通知注册表的情况下“消失”的应用程序实例。

  • 如果注册表重新启动,您必须有办法恢复状态。

  • 应用程序必须知道注册表实例的名称(或地址)和端口。

广播/多播

  • 应用程序的每个实例都在众所周知的“广播”或“多播”地址/端口上进行监听。

  • 当程序想要定位应用程序的实例时,它会发送广播/多播请求。

  • 每个实例都会响应提供其详细信息的请求。

  • 程序会累积响应以构建所有“实时”实例的列表。

问题:

  • 这无法扩展。来自 M 个程序的每个请求都会发送到 N 台机器并生成 N 个响应。随着 M 和 N 的增长,网络流量呈二次方增长。

  • 广播和多播是有损的,尤其是在繁忙的网络上。

  • 广播通常不会跨越网络边界。多播需要特殊配置。


这两种方法都适用于实例数量有限的小型网络。

简单的方法是确定可以为您完成大部分工作的现有分布式计算技术。例如,RMI 和 RMI 注册表、动态 DNS、CORBA、JINI。

关于java - 获取网络上可用计算机的 IP 地址? -java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com