首页 > 编程语言 >java中工具类检测ip和端口能否正常连接

java中工具类检测ip和端口能否正常连接

时间:2024-04-11 19:12:12浏览次数:20  
标签:java String format ip 端口 host reachable msg socket

话不多说, 直接上干货...

public class NetUtils {
    private static final Logger log = LoggerFactory.getLogger(NetUtils.class);

    /**
     * 特别注意: ping不通, 并不代表telnet或者socket就不能正常连接
     * 原因: 协议不同
     * - ping是基于ICMP协议, ping不通可能原因是防火墙或其他主机设置禁用了ICMP协议
     * - telnet/socket都是基于TCP/IP协议簇
     */

    /**
     * 检测ip是否可连接
     * @param host 域名或ip地址
     * @return
     */
    public static NetConnect testIpConnect(String host) {
        boolean reachable = false;
        String msg;

        try {
            InetAddress address = InetAddress.getByName(host);
            // 5000ms timeout
            // 这个方法会尝试发送一个ICMP(Internet Control Message Protocol)回显请求包, ping命令也是基于ICMP协议
            reachable = address.isReachable(5000);
            if (reachable) {
                msg = String.format("Ping %s  : Success", host);
            }else {
                msg = String.format("Ping %s  : Failed", host);
            }
        } catch (UnknownHostException e) {
            msg = String.format("Invalid URL or Host not found: %s", host);
        } catch (Exception e) {
            msg = String.format("Error: %s", e.getMessage());
        }

        log.info(msg);
        return NetConnect.builder().connect(reachable).msg(msg).receiveTime(LocalDateTime.now()).build();
    }

    /**
     * 检测socket是否可连接
     * @param host 域名或ip地址
     * @param port 端口号
     * @return
     */
    public static NetConnect testSocketConnect(String host, int port) {
        boolean reachable = false;
        String msg;

        try {
            //这里创建的是tcp连接的socket, 这里能连接的话, 则http接口应该也可以正常连接
            Socket socket = new Socket();
            // 5000ms timeout
            socket.connect(new InetSocketAddress(host, port), 5000);
            reachable = true;
            msg = String.format("Port %s is open on %s", port, host);
            // 关闭socket连接
            socket.close();
        } catch (Exception e) {
            msg = String.format("Port %s is closed on %s", port, host);
        }

        log.info(msg);
        return NetConnect.builder().connect(reachable).msg(msg).receiveTime(LocalDateTime.now()).build();
    }
}

 

标签:java,String,format,ip,端口,host,reachable,msg,socket
From: https://www.cnblogs.com/Baker-Street/p/18129894

相关文章

  • docker nginx监听80端口 同一 IP 多域名配置方法--多子配置文件包含 https
    下载nginx镜像文件dockerpullnginx:1.24.0宿主机上创建nginx_80目录htmlcertconflogs创建配置文件nginx.conf一、Nginx配置文件nginx.conf操作:在http模块增加(子配置文件的路径和名称):include/etc/nginx/conf.d/*.conf;usernginx;worker_processes1;err......
  • UJCMS 9.1.0 发布,国内开源 java cms
    许可协议从GPL-2改为Apache-2.0,更宽松的协议,方便用户将系统集成到自身的应用中。修复了已知bug,系统更加稳定。升级日志(9.1.0)修复前台全文搜索没有结果web.xmlsession过期时间从30分钟改成25分钟,部分漏洞扫描软件会将session过期时间大于等于30分钟判定为漏洞修复文章管理一......
  • [题解] <NOIP2017> 时间复杂度
    [题解]NOIP2017时间复杂度题目描述小明正在学习一种新的编程语言A++,刚学会循环语句的他激动地写了好多程序并给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序,于是你的机会来啦!下面请你编写程序来判断小明对他的每个程序给出的时间复杂度是否正......
  • ios ipa包上传需要什么工具
    ​ 目录 前言一、IPA包的原理二、IPA包上传的步骤2.apk软件制作工具创建应用程序3.构建应用程序4.生成证书和配置文件5.打包IPA包6.上传IPA包三、总结 前言iOSIPA包是iOS应用程序的安装包,可以通过iTunes或者其他第三方应用商店安装到iOS设备上。在开发iOS应用......
  • 洛谷题单指南-数学基础问题-P1072 [NOIP2009 提高组] Hankson 的趣味题
    原题链接:https://www.luogu.com.cn/problem/P1072题意解读:求有多少个x,满足x和a0​的最大公约数是a1​,x和b0​的最小公倍数是b1,多组数据。解题思路:枚举法:因为x和a0​的最大公约数是a1​,x和b0​的最小公倍数是b1,所以x不大于b1​。枚举x有两种思路:1、x是a1的倍数,最多需要枚举......
  • 【教程】四种方法将App打包为IPA文件类型
     摘要本教程总结了将App应用程序打包为IPA包的四种常用方法,包括Apple推荐的方式、iTunes拖入方法、自动编译脚本和解压改后缀名方法。每种方法都有其特点和适用场景,在实际开发中可以根据需求选择合适的方式进行打包。通过本教程,您将了解到不同打包方式的优缺点,并学会如何利用脚......
  • Java开头(开发环境配置及IDE的安装)
    Java安装开发环境卸载JDK删除Java的安装目录删除环境变量JAVA_HOME删除path下关于Java的目录检验(cmd中),输入java-version安装JDKOralce官网下载并安装记住安装的路径配置环境变量(系统变量中新建变量JAVA_HOME,并设定变量值为java文件的根目录)配置path变量(添加%JAVA_......
  • java面向对象有哪些特征
    Java面向对象编程(OOP)的核心特征通常包括封装性、继承性、多态性和抽象性。具体如下:封装性:封装是指将对象的属性(数据)和行为(方法)绑定在一起,并对对象的实现细节进行隐藏,只暴露出必要的接口给外部使用。这样做的目的是为了保护对象的内部状态,防止外部随意访问和修改。继承性:继承允......
  • JAVA语言学习-Day8
    参考教学视频:秦疆GUI组件:窗口、弹框、面板、文本框、列表框、按钮、图片、监听事件、鼠标、键盘事件、破解工具1.简介Gui的核心:SwingAWT界面不美观需要jre环境2.AWTawt介绍:包含了很多的接口和类元素:窗口、按钮、文本框java.awt.*组件Componentbu......
  • vue2.x版本中productionTip=false设置无效
    引用自:https://www.cnblogs.com/javaxubo/p/17397457.html  首先,我们看到vue官网中关于productionTip的API使用:但是,我在本地中使用却无效,代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatibl......