自动刷新以Java连接的IP地址列表

时间:2016-06-18 16:37:31

标签: java networking ip

我正在编写一些代码,用于从连接到同一网络的计算机发送/接收信息。我有一种方法可以在那个时刻获取在线计算机的IP,但是当新的IP出现/消失时我需要刷新列表。

我认为没有线程并且调用该方法的while (true)是最佳解决方案。我想不出别的什么 - 有什么建议吗?

以下是我用于搜索网络上活动计算机的代码示例:

public List<String> searchApps() {
    List<AddressServiceTypePair> ip = this.networkController.getDiscovered();  //returns an ArrayList<AddressServiceTypePair>

    onlineApps.clear();
    for (AddressServiceTypePair service : ip) {
        onlineApps.add(service);
    }

    List<String> list = new ArrayList<>();
    for (AddressServiceTypePair aux : onlineApps) {
        list.add(aux.getIP());
    }
    return list;
}

1 个答案:

答案 0 :(得分:1)

很难根据发布的不明确的代码示例进行概括。但是,我假设您正在编写某种类型的客户端和服务器代码。没有简单的方法可以通知网络上添加/删除的计算机。如果您需要一个最新的时刻 IP列表,我会感到惊讶。您可以将您的IP发现方法置于无限循环中,只需在循环中包含Thread.sleep(milliseconds);

如果你确实需要非常新的信息,你可以让每个连接的计算机也连接到另一个端口上的Socket,然后尝试从Socket中读取 - 这样你会得到一个异常Socket关闭后不久您可以在创建套接字时添加客户端的IP,然后您的catch块可以在Socket关闭时更新您的活动IP列表,表明客户端已不再连接。