用JAVA去获取局域网中在线设备的需求,比如我的设备IP是192.168.1.3,我需要先判断是否在线这会你就会想到的是PING但是加上端口呢?比如我的设备IP是192.168.1.3:8080呢?根据IP加端口扫描;以下是我整理出来的解决方案:

  /*** @description: 获取设备在线状态* @param networkSegment 网段 port 端口* @return Map<String,Boolean>* @author panlupeng* @date 2022/3/22 16:19*/public static Map<String,Boolean> getDeviceOnLineStatus(String networkSegment,int port){Map<String,Integer> map=new LinkedHashMap<>();Map<String,Boolean> resultMap=new HashMap();if(StringUtils.isEmpty(networkSegment)){try{networkSegment = InetAddress.getLocalHost().getHostAddress();}catch (Exception e){e.printStackTrace();}}int lastPoint = networkSegment.lastIndexOf('.');String ipHead = networkSegment.substring(0, ++lastPoint);for (int num = 1; num < 255; num++) {String ip = ipHead + String.valueOf(num);map.put(ip,port);}if(!CollectionUtils.isEmpty(map)){Iterator<Map.Entry<String, Integer>> entries = map.entrySet().iterator();while(entries.hasNext()){Map.Entry<String, Integer> entry = entries.next();boolean pingIpAndPort = pingIpAndPort(entry.getKey(),entry.getValue());System.out.println("IP为:"+entry.getKey()+",连接状态:"+pingIpAndPort);resultMap.put(entry.getKey(),pingIpAndPort);}}return resultMap;}/*** @description: PING IP网络* @param  ip* @return boolean* @author panlupeng* @date 2022/3/22 16:53 */public static boolean pingDeviceIp(String ip){if(StringUtils.isEmpty(ip)){return false;}if (!pingIp(ip)) {return false;}int timeOut = 3000;boolean reachable =false;try{reachable = InetAddress.getByName(ip).isReachable(timeOut);}catch (Exception e){e.printStackTrace();}return reachable;}/*** ping ip** @param ip* @return*/public static boolean pingIp(String ip) {if (null == ip || 0 == ip.length()) {return false;}try {InetAddress.getByName(ip);return true;} catch (IOException e) {return false;}}/*** ping ip加端口** @param ip* @param port* @return*/public static boolean pingIpAndPort(String ip, String port) {if (null == ip || 0 == ip.length() || null == port || 0 == port.length() || !isInt(port) || !isRangeInt(port, 1024, 65535)) {return false;}return pingIpAndPort(ip, Integer.parseInt(port));}/*** 判断是否是整数** @param str* @return*/public static boolean isInt(String str) {if (!isNumeric(str)) {return false;}// 该正则表达式可以匹配所有的数字 包括负数Pattern pattern = Pattern.compile("[0-9]+");Matcher isNum = pattern.matcher(str); // matcher是全匹配if (!isNum.matches()) {return false;}return true;}/*** 匹配是否包含数字** @param str* @return*/public static boolean isNumeric(String str) {if (null == str || 0 == str.length()) {return false;}if (str.endsWith(".")) {return false;}// 该正则表达式可以匹配所有的数字 包括负数Pattern pattern = Pattern.compile("-?[0-9]+\\.?[0-9]*");Matcher isNum = pattern.matcher(str); // matcher是全匹配if (!isNum.matches()) {return false;}return true;}/*** 是否在范围内** @param str* @param start* @param end* @return*/public static boolean isRangeInt(String str, int start, int end) {if (!isInt(str)) {return false;}int i = Integer.parseInt(str);return i > start && i < end;}

测试结果:

用JAVA PING IP 网络解决方案如下:

    /*** @description: PING IP网络* @param  ip* @return boolean* @author panlupeng* @date 2022/3/22 16:53 */public static boolean pingDeviceIp(String ip){if(StringUtils.isEmpty(ip)){return false;}if (!pingIp(ip)) {return false;}int timeOut = 3000;boolean reachable =false;try{reachable = InetAddress.getByName(ip).isReachable(timeOut);}catch (Exception e){e.printStackTrace();}return reachable;}

演示结果:

JAVA-扫描局域网、自定义网段IP加端口在线设备相关推荐

  1. python扫描局域网端口和ip_python实现扫描局域网指定网段ip的方法

    一.问题由来 工作的局域网中,会接入很多设备,机器人上的网络设备就2个了,一个巨哥红外,一个海康可见光.机器人还有自身的ip. 有时候机器人挂的多了,设备维修更换中,搞来搞去就不记得ip是什么,用自带 ...

  2. php如何扫描局域网ip,python实现扫描局域网指定网段ip的方法

    一.问题由来 工作的局域网中,会接入很多设备,机器人上的网络设备就2个了,一个巨哥红外,一个海康可见光.机器人还有自身的ip. 有时候机器人挂的多了,设备维修更换中,搞来搞去就不记得ip是什么,用自带 ...

  3. 扫描局域网的所有ip

    两种方法,直接上代码 using System; using System.Collections.Generic; using System.Linq; using System.Net; usin ...

  4. SQL:安装多个实例,修改实例端口号,和IP加端口号连接实例

    原文:SQL:安装多个实例,修改实例端口号,和IP加端口号连接实例 sql server 安装第一个实例,默认实例的端口是1433,   一个库中如果有多个实例, 从第二个实例开始的端口是动态端口,需 ...

  5. 教你如何处理Nginx禁止ip加端口访问的问题

    这篇文章主要介绍了Nginx禁止ip加端口访问的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 Nginx禁止IP加端口访问 使用iptables 限制 ...

  6. Java获取局域网中所有ip和Mac地址

    Java获取局域网中所有ip和Mac地址 定义一个Util public class IpAndMacUtil {/*** 获取本机Mac地址* @param ia* @return* @throws ...

  7. Linux下使用nmap扫描局域网存活的IP

    Linux下使用nmap扫描局域网存活的IP [root@z05 ~]# nmap -sP 192.168.0.0/24|grep 192. mass_dns: warning: Unable to ...

  8. 群晖wordpress如何连接mysql,「全网首发」群晖wordpress二级目录下实现IP加端口访问教程...

    1.需要的工具:web station ,MariaDB 10,phpmyadmin,php5.6,Apache http Server 2.4这几个工具可以套件中心安装wordpress时一键自动安 ...

  9. java扫描局域网中可用ip_使用java线程扫描局域网ip简单方案

    package com.cjh.thread; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...

最新文章

  1. 10分钟带你深入理解Transformer原理及实现
  2. 从微盟36小时故障,谈谈数据安全这点事
  3. 可构建AI的“AI”诞生:几分之一秒内,就能预测新网络的参数
  4. SAP SD基础知识之自动信用控制
  5. 程序员 35 岁就该退休了吗?
  6. Kubernetes — Pod
  7. 2014百度研发真题及其解析-求比指定数大且最小的“不重复数”
  8. 【English】Grab-Verify Your Email Address
  9. hdu2489 Minimal Ratio Tree
  10. SurfaceView的经典写法
  11. 如何在InfoPath2010中转换主数据源
  12. 魔鬼数学——大数据时代,数学思维的力量
  13. 参数化设计的意义——Autodriver
  14. [云原生专题-41]:K8S - 核心概念 - Service业务的统一网关接口Ingress详解、安装、常见操作命令
  15. div 中进行左右分离
  16. LineRenderer画虚线
  17. api-ms-win-crt-runtime-l1-1-0.dll 丢失
  18. 华为EMUI屏蔽更新
  19. 数据结构实验一,第2题:基于顺序存储结构的图书信息表的排序
  20. 微软流媒体框架DirectShow

热门文章

  1. jeecg-boot:将单表列表页作为弹框,并且传递参数到解决方案(场景商品到明细信息维护)
  2. 节点污点 Taint 和容忍度 Toleration在生产中的使用
  3. 对计算机财务管理的理解,计算机财务管理.doc
  4. unity四种Text总结
  5. 多模态深度学习综述:网络结构设计和模态融合方法汇总
  6. Pytorch使用预训练模型进行图像分类
  7. 制动电阻 DF8B型机车电阻制动装置-奥创电子
  8. 首都师范 博弈论 6 5 1有限次的重复博弈
  9. BIP语言介绍(一)
  10. 统计学习第十四周-方差分析