如何确保我的Windows系统已连接到网络

时间:2017-01-05 13:12:18

标签: java windows networking network-programming ping

我正在创建一个实用程序,它还包含一些连接到我网络的ip地址列表。

我需要创建一个不断刷新该列表的模块,以便该列表中只存在活动IP。 我想过通过在每个IP上使用PING来实现这一点,并删除非响应的。

问题是,当我的系统本身未连接到网络时,我不想删除IP,因为在这种情况下,所有IP都将被删除,原因很明显。

如何确定我的系统已连接到某个网络? 我正在使用Java。 我试过查看其他问题,但找不到任何相关的内容。

[EDIT1] IP列表是手动添加的,服务器还有几个IP,我不需要关心。所以我不能按照@Hoijf的建议在整个服务器上查找。此外,IP的变化也一致,这就是为什么我需要更新我的列表以便我们可以替换非响应服务器/ IP。

2 个答案:

答案 0 :(得分:0)

  1. 扫描网络并保存处于活动状态的IP。
  2. 将IP存储在一个数组中并迭代此数组,直到用户选择停止或刷新(返回步骤1)。
  3. 显示每个IP的状态。

    public class temp
    {
    static ArrayList<InetAddress> history = new ArrayList<InetAddress>();
    static Timer timer;
    static InetAddress add;
    public static void main(String[] args)
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int timeout = 25;
        timer = new Timer(1000, new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
        {
            for(InetAddress ii : history)
            {
                try
                {
                    System.out.println(ii+" >> "+ii.isReachable(timeout));
                } catch (IOException e1){System.out.println(ii+" >>                          Failed");}
            }
        }
    });
    Thread t = new Thread(new Runnable()
    {
        @Override
        public void run()
        {
            while(true)
            {
                try
                {
                    history.add(InetAddress.getByName(br.readLine()));
                } catch (UnknownHostException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        });
        t.start();
        timer.start();
    }
    

    }

答案 1 :(得分:0)

  

问题是我不希望在我的系统本身时删除IP   没有连接到网络,因为在这种情况下所有的IP都将获得   删除原因很明显。

这是典型的网络隔离问题。您应该考虑局域网仍在运行的情况(ipconfig会将NIC的状态显示为UP),但是,您已经失去了互联网连接(在某些上游路由器上)。作为一种解决方案,您可以考虑ping一直应该启动的引用IP /主机。 因此,您应该在程序中创建一个策略来ping此引用主机,以检查是否应从活动列表中删除主机。