Java代码中验证IP地址是否可访问【Linux和windows环境下】

2023-11-02

Java代码中验证IP地址是否可访问【Linux和windows环境下】

我的需求场景是尝试连接数据源,数据库地址有不同网络环境下的地址{生产、内网、局域网等},所以在连接数据源之前判断一下url中的ip是否可访问,然后决定是否执行下一步操作。

提取字符串中的IP

	/**
     * 提取字符串中的IP集合
     * @param line 目标字符
     * @return 返回所有发现的IP
     * @作者 <b><a class=b href="https://blog.csdn.net/lingdu_dou" color="red">⭕°</a></b>
     * @创建时间 2022-08-30 11:20     */
    public static List<String> extractIp(String line) {
        List<String> ips = new ArrayList<>();
        if (line != null) {
            String regex = "(^|[^\\d])(((2[0-4]\\d|25[0-5]|1\\d\\d|\\d\\d?)\\.){3}(2[0-4]\\d|25\\d|1\\d\\d|\\d\\d?))";
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(line);
            while (m.find()) {
                ips.add(m.group(2));
            }
        }
        return ips;
    }

检查是否可访问

	/**
     * 测试网址是否可访问
     * @param ip ip地址
     * @return 返回true可访问 返回false不可访问
     * @作者 <b><a class=b href="https://blog.csdn.net/lingdu_dou" color="red">⭕°</a></b>
     * @创建时间 2022-08-31 9:05     */
    public static boolean ping(String ip) {
        //获取操作系统类型
        String osName = System.getProperty("os.name");
        log.info("操作系统:"+osName);
        String command = "";
        if(osName.contains("Linux")){
            command = "ping -c 1 -w 1 "+ip;
        }else if(osName.contains("Windows")){
            command = "ping -n 1 -w 1000 "+ip;
        }else {
            log.error("未知系统 执行ping命令失败");
            return false;
        }
        try {
            Process p = Runtime.getRuntime().exec(command);
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream(), "GBK"));
            String line = null;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
                if (line.contains("来自")||line.contains("1 received")) {
                    log.info(ip + " 连接成功");
                    return true;
                }
                if (line.contains("请求超时")||line.contains("0 received")) {
                    log.info(ip + " 连接失败");
                    return false;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java代码中验证IP地址是否可访问【Linux和windows环境下】 的相关文章

  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • ImageIo 用法

    84 ImageIo 用法 ImageIO read 参数 可以是一个文件 一个io流 或者是一个url ImageIO write 方法 可以写入到一个文件中 也可以写到一个io流中 public static void main Str
  • 通俗易懂解释知识图谱(Knowledge Graph)

    1 前言 从一开始的Google搜索 到现在的聊天机器人 大数据风控 证券投资 智能医疗 自适应教育 推荐系统 无一不跟知识图谱相关 它在技术领域的热度也在逐年上升 本文以通俗易懂的方式来讲解知识图谱相关的知识 尤其对从零开始搭建知识图谱过
  • 11-TensorFlow 基于ResNet的轴承故障诊断

    1 数据集 数据是来自凯斯西储大学 CWRU 滚动轴承数据中心 官方网站数据下载地址 https csegroups case edu bearingdatacenter pages download data file CWRU滚动轴承数
  • 【Shell牛客刷题系列】SHELL27 nginx日志分析5-统计爬虫抓取404的次数

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Shell 欢迎关注专栏 本文知识预告 本文首先复习了grep awk wc等命令的相关用
  • 计算一个数的二进制表示中有多少个1

    https zhidao baidu com question 1370480689655286419 html 计算机里的数字本来就是用二进制存的 所以计算过程也都是二进制计算 利用一些位运算的特性 可以很容易计算1的个数 有一个很有意思
  • Assets/Vuforia/Scripts/DefaultInitializationErrorHandler.cs(10,7): error CS0246: The type or namespa

    Assets Vuforia Scripts DefaultInitializationErrorHandler cs 10 7 error CS0246 The type or namespace name Vuforia could n
  • android系统如何自适应屏幕大小

    b 1 屏幕相关概念 b 1 1分辨率 是指屏幕上有横竖各有多少个像素 1 2屏幕尺寸 指的是手机实际的物理尺寸 比如常用的2 8英寸 3 2英寸 3 5英寸 3 7英寸 android将屏幕大小分为四个级别 small normal la
  • PCIe的发展过程

    PCIe 在原来的时候 我们的电脑并不像如今这样 有如此统一的接口与总线规范 那时想要给主板做拓展有很大的局限性 因为主板上的接口基本只能对应一个硬件设备 各大厂商之间的规范也各不相同 就是在这样的大环境下 ISA 诞生了 上世纪 80 年
  • VS编写简单的C\C++程序步骤

    VS编写简单的C C 程序步骤 一共分为两个模块 第一个模块新建项目 具体如图 1 选择文件 gt 已安装 gt Visual C gt 空项目 gt 修改项目名 gt 修改项目存储位置 gt 确定 第2个模块 新建源程序文件 具体流程如下
  • ElementUI按需引入各种组件

    ElementUI按需引入各种组件 一 首先按需引入前奏 安装element ui npm i element ui S 安装按需引入必要插件 npm install babel plugin component D 修改 babelrc
  • linux下如何安装python以及一些注意事项

    linux下如何安装python 事先需找到python的下载路径 自己下载下来或者通过wget下载下来 官网包下载路径 https www python org downloads 1 安装python3 6 13 wget https
  • Spring系列之primary可以解决什么问题?

    存在的问题以及解决方案 直接上案例 通过案例来看技术是如何使用的 package com javacode2018 lesson001 demo8 public class NormalBean public interface IServ
  • Python基础知识之4

    Python基础知识之4 函数与库 所谓函数 就是把具有独立功能的代码块组织为一个小模块 在需要的时候可以反复调用 函数分为编译器自带的函数 内建 和用户自己创建的函数 自定义函数 内建函数是编译器开发者已经定义好的函数 用户可以直接使用
  • Sharding-JDBC(六)5.1.0版本,实现按月分表、自动建表、自动刷新节点

    目录 1 Maven 依赖 2 创建表结构 3 yml 配置 4 TimeShardingAlgorithm java 分片算法类 5 ShardingAlgorithmTool java 分片工具类 6 ShardingTablesLoa
  • Home_istoreOS

    1 重置网络 修改lan口 vi etc config network 修改LAN口为 192 168 10 100 修改root密码 原始密码password2 修改为旁路由模式 只需要修改网关为 192 168 10 1 不需要DHCP
  • 解决安装依赖时报错:npm ERR! code ERESOLVE

    系列文章目录 文章目录 系列文章目录 前言 一 错误原因 二 解决方法 三 注意事项 总结 前言 在使用 npm 安装项目依赖时 有时会遇到错误信息 npm ERR code ERESOLVE 该错误通常发生在依赖版本冲突或者依赖解析问题时
  • git解决 error: you need to resolve your current index first

    问题 执行切换代码分支 git checkout featrue 2019 06 24 报错如下 error you need to resolve your current index first 执行git pull代码时报错 Pull
  • styled-components:一本通

    初体验 styled方法 将React组件包装成Styled组件 的三种情况 tagged template literal interpolations 插值表达式 mixin StyledComponent相关特性 extend 继承
  • 计算机系统实验之datalab

    datalab实验是CSAPP中关于整数和浮点数的位运算的实验 对于我们理解位运算和整数 浮点数的位级表示有着很好的帮助 实验目的 修改bits c的C语言代码 使其通过所有在不违反任何编码准则的情况下 在btest中进行测试 进一步熟悉整
  • Java代码中验证IP地址是否可访问【Linux和windows环境下】

    Java代码中验证IP地址是否可访问 Linux和windows环境下 我的需求场景是尝试连接数据源 数据库地址有不同网络环境下的地址 生产 内网 局域网等 所以在连接数据源之前判断一下url中的ip是否可访问 然后决定是否执行下一步操作