`
lbyzx123
  • 浏览: 476032 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

判断网络IP端口是否可连接

    博客分类:
  • java
 
阅读更多
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;

public class ConnectionUtils {

    private static final Logger LOGGER = LoggerFactory.getLogger(ConnectionUtils.class);

    private static final int TIMEOUT = 3000;

    public static void main(String[] args) {
        System.out.println(isReachable("192.168.43.103"));
        System.out.println(isConnectable("192.168.43.103", 8081));
    }

    public static boolean isReachable(String ip) {
        if (StringUtils.isBlank(ip)) {
            return false;
        }
        try {
            return InetAddress.getByName(ip).isReachable(TIMEOUT);
        } catch (Exception e) {
            LOGGER.info("isReachable({}) encoutered exception :{}", ip, e);
        }
        return false;
    }

    public static boolean isConnectable(String ip, int port) {
        if (StringUtils.isBlank(ip) || port < 0) {
            return false;
        }
        Socket socket = new Socket();
        InputStream inputStream = null;
        try {
            socket.setSoTimeout(TIMEOUT);
            socket.connect(new InetSocketAddress(ip, port));
            inputStream = socket.getInputStream();
            byte[] b = new byte[1024];
            int size;
            while (true) {
                size = inputStream.read(b);
                if (-1 == size) {
                    break;
                }
            }
        } catch (Exception e) {
            LOGGER.info("isConnectable({},{}) encoutered exception :{}", ip, port, e);
            String message = e.getMessage();
            System.out.println(message);
            if (StringUtils.isNotBlank(message) && (message.lastIndexOf("Connection refused") != -1 || message.lastIndexOf("Connection timed out") != -1)) {
                return false;
            }

        } finally {
            try {
                socket.close();
                if (inputStream != null) {
                    inputStream.close();
                }
            } catch (IOException e) {

            }
        }
        return true;
    }
}

 

分享到:
评论

相关推荐

    android判断网络端口是否可达

    下面将详细介绍如何通过Socket连接判断网络端口是否可达,并以Android为例进行讲解。 首先,了解Socket的基本概念。Socket是应用层与传输层之间的一个接口,它允许应用程序通过TCP/IP协议进行数据传输。在Java中,`...

    c# ping网络ip或网站地址 判断网络是否连接

    就是一个判断本机与某个IP地址、某个电脑是否连通,从而可以判断本机是否在某个网段上,也可以通过ping外网的地址来判断本机是否连网,也可以用来检测某个网站是否还存在可以访问。

    易语言判断端口开放

    在易语言判断端口开放源码中,开发者通常会结合这些函数编写一段代码,首先创建网络通讯对象,然后尝试连接目标IP和端口,根据连接结果判断端口是否开放,最后关闭网络连接。这种方法简单有效,适用于大多数情况。 ...

    易语言内网IP搜索,端口检测源码

    1. **IP地址扫描**:通过发送ICMP(Internet Control Message Protocol)回显请求(ping命令)或者TCP/UDP的连接请求,来判断IP地址是否可达。易语言提供了相应的网络库函数,如`发送ICMP请求`或`建立TCP连接`,用于...

    c#检测远程或本地端口是否打开

    在C#编程中,检测一个远程或本地端口是否打开是一项常见的网络编程任务,尤其在进行服务器连接或者网络通信时非常关键。这个任务通常通过TCP(传输控制协议)来实现,因为TCP是一种面向连接的、可靠的协议,可以确保...

    本机IP端口查看器,图形化查看本机端口连接状况

    下载并运行"本机IP端口查看器"的可执行文件"aports.exe",界面将自动显示当前本机的端口连接情况。用户可以通过过滤、排序功能快速定位感兴趣的信息。此外,一些高级功能如导出报告、定时扫描等,可以帮助进行更深度...

    IP端口探测器-无视禁PING 绿色版

    IP端口探测器则能够绕过这种限制,通过TCP或UDP协议主动发起连接尝试,从而判断目标IP是否在线以及开放了哪些端口。 端口是网络通信的通道,不同的服务通常会绑定到特定的端口上。例如,HTTP服务通常使用80端口,...

    C#实现Tracert/Ping/快速判断端口是否开放

    本项目利用C#编程语言实现了这些功能,并且能够快速判断端口是否开放,这对于网络调试、性能优化以及故障排查具有极大的帮助。 首先,我们来详细探讨Tracert功能的实现。Tracert(也称为traceroute)是一种网络诊断...

    IP段端口扫描.rar

    IP段端口扫描是网络安全领域中的一个重要概念,它主要用于检测特定IP地址范围内的网络设备开放了哪些服务端口。在互联网上,每个设备都有一个唯一的IP地址,而端口则是设备上运行的服务与外界通信的通道。端口扫描是...

    ip 端口 测试工具

    1. **ping命令**:最基础的网络连通性测试,用于判断IP地址是否可达,但ping命令不检查端口状态。 2. **TCP/UDP连接测试**:通过telnet或nc(netcat)命令尝试与目标端口建立连接,如果连接成功,说明端口开放;反之...

    服务器IP端口扫描工具

    在IT领域,网络管理和安全是至关重要的部分,而服务器IP端口扫描工具则是这一环节中的重要工具。IP端口扫描是网络安全评估、故障排查和系统维护的重要手段,它可以帮助我们了解网络服务的状态,发现潜在的安全漏洞,...

    C++ 实现IP端口扫描

    IP端口扫描的工作原理通常是通过发送TCP或UDP协议的数据包到目标IP地址的各个端口,然后根据返回的响应(如果有的话)判断该端口是否开放。扫描过程通常包括以下几个步骤: 1. **初始化**: 设置目标IP地址范围和要...

    易语言IP段端口扫描源码

    【易语言IP段端口扫描源码】是一个用于网络扫描的程序,主要功能是检查指定的IP地址范围内的端口是否开放。在IT领域,端口扫描是网络安全和系统管理员常用的工具,它可以帮助识别网络上的服务、漏洞以及潜在的安全...

    android IP和端口的验证方法 正则表达式

    在Android开发中,验证IP地址和端口号是网络通信中不可或缺的一环,确保输入的数据格式正确,能够有效地防止错误的网络请求。正则表达式是一种强大的文本处理工具,可以用来匹配、查找、替换等操作,尤其适用于数据...

    JAVA中检查网络是否是通的

    这个任务可以通过多种方法实现,其中一种常用的方法就是利用 Telnet 协议来检查 IP 地址和端口是否可达。下面我们将详细介绍如何在Java中实现这个功能。 首先,我们需要了解 Telnet 是什么。Telnet 是一种协议,...

    IP端口开放扫描工具

    IP端口开放扫描工具的工作原理是通过发送特定的网络请求(如TCP SYN或UDP数据包)到目标IP地址的各个端口,然后根据返回的响应来判断端口是否开放。如果目标机器响应,说明该端口是开放的;如果没有任何响应或者收到...

    易语言取封包套接字IP端口模块

    5. **处理IP和端口信息**:提取到的IP地址和端口号可以用于识别数据的来源或目的地,也可以用于进一步的网络操作,比如判断是否为合法的连接请求,或者进行多线程处理等。 6. **关闭套接字**:完成通信后,记得使用...

    Aaron指定IP端口扫描.rar

    总的来说,端口扫描是网络管理与安全检查的重要手段,"Aaron指定IP端口扫描"作为一款便捷的工具,为用户提供了直观、高效的端口检测方式。正确理解和使用这样的工具,将有助于我们更好地维护网络安全,防止潜在的...

    局域网ip以及开放端口

    这可以通过网络扫描工具完成,这些工具发送数据包到目标IP并根据收到的响应判断设备是否在线。活动IP意味着设备已开机并连接到了网络。 3. **开放端口**:端口是计算机网络中用于通信的逻辑通道,每个端口号对应一...

    检测端口是否被占用源码(C++)

    在C++编程中,检测端口是否被占用是网络编程中的常见需求,特别是在服务器开发或者客户端连接时,确保端口可用性至关重要。本教程将详细解释如何使用C++实现这一功能,主要涉及TCP协议和系统调用。 首先,我们要...

Global site tag (gtag.js) - Google Analytics