局域网内扫描设备的简单Java实现

版权声明:此BLOG为个人维护BLOG,内容均来自原创及互连网转载。最终目的为收集整理自己需要的文章技术等内容,不涉及商业用途。 本BLOG上原创文章未经本人许可,不得用于商业用途及传统媒体。网络媒体转载请注明出处,否则属于侵权行为。 3、有关本站侵权   本BLOG所转载的内容,均是本人未发现有对文章版权声明的文章且无来自传统媒体。如果本BLOG侵犯了您的权益,请联系本人,本人将会在第一时间删除侵权文章 https://blog.csdn.net/qq_20221151/article/details/82556191

在产品的使用中我们一般都要设置一个配置环节,这个环节可以设定主机的IP地址等信息,但是这样配置的话使得我们的产品用起来效果不是很好,因此我想到了实现局域网IP扫描的功能,IP局域网扫描是指定IP网段获取IP地址信息的方法,在加上PING命令来处理实现,检查该设备是否在线。

代码很简单,主要浏览就是获取主机名,然后检查该设备是否可用,如果可用,那么我们的设备是在线的,如果不可用,那说明以前登陆过,现在无法登陆,然后可以根据主机名来实现自动配置的效果。

具体代码

    public static void main(String[] args) {
        try {
            //设置IP地址网段
            String ips = "192.168.2.";
            String ip;
            InetAddress addip;
            //遍历IP地址
            for (int i = 1; i < 255; i++) {
                ip = ips + i;
                addip = InetAddress.getByName(ip);
                //获取登录过的设备
                if (!ip.equals(addip.getHostName())) {
                    //检查设备是否在线,其中1000ms指定的是超时时间
                    boolean status = InetAddress.getByName(addip.getHostName()).isReachable(1000);     // 当返回值是true时,说明host是可用的,false则不可。
                    System.out.println("IP地址为:" + ip + "\t\t设备名称为: " + addip.getHostName() + "\t\t是否可用: " + (status ? "可用" : "不可用"));
                }
            }
        } catch (java.io.IOException uhe) {
            System.err.println("Unable to find: " + uhe.getLocalizedMessage());
        }
    }

实现效果

IP地址为:192.168.2.1        设备名称为: phicomm.me                              是否可用: 可用
IP地址为:192.168.2.103     设备名称为: yunos-609150f1f6a4a718.lan       是否可用: 不可用
IP地址为:192.168.2.124     设备名称为: tao-mac.lan                                是否可用: 可用
IP地址为:192.168.2.149     设备名称为: android-2bd63cc5913f1868.lan     是否可用: 不可用
IP地址为:192.168.2.183     设备名称为: redminote4x-hongmish.lan         是否可用: 不可用
IP地址为:192.168.2.198     设备名称为: mi6-xiaomishouji.lan                 是否可用: 不可用

进一步

在设置当前网段的时候,可以更具本机的IP地址来自动的设置当前网段,而不是手动的填写。在识别到某个设备可用的时候,通过接口或者主机名称来判断是是服务器,如果是的话,那么就进行连接操作!

猜你喜欢

转载自blog.csdn.net/qq_20221151/article/details/82556191
今日推荐