Java如何检查端口是否被使用?

在Java编程中,如何扫描打开的端口(是否被使用)?

以下示例显示如何通过创建 Socket 对象来检查主机上打开或正在使用的端口(相当于一个简单的端口扫描器)。

package com.yiibai;

import java.net.*;
import java.io.*;

public class CheckPort {
    public static void main(String[] args) {
        Socket Skt;
        String host = "localhost";

        if (args.length > 0) {
            host = args[0];
        }
        for (int i = 100; i < 1024; i++) {
            try {
                System.out.println("Looking for " + i);
                Skt = new Socket(host, i);
                System.out.println("There is a server on port " + i + " of " + host);
            } catch (UnknownHostException e) {
                System.out.println("Exception occured" + e);
                break;
            } catch (IOException e) {
            }
        }
    }
}

Java

上述代码示例将产生以下结果 -

......
Looking for 133
Looking for 134
Looking for 135
There is a server on port 135 of localhost
Looking for 136
Looking for 137
Looking for 138
......

原文地址:https://www.cnblogs.com/borter/p/9617177.html

时间: 2024-11-14 04:09:03

Java如何检查端口是否被使用?的相关文章

java实例检查端口是否被占用

127.0.0.1代表本机 主要的原理是:Socket socket = new Socket(Address,port);#address代表主机的IP地址,port代表端口号 如果对该主机的特定端口号能建立一个socket,则说明该主机的该端口在使用. Socket socket = new Socket(Address,port);#address代表主机的IP地址,port代表端口号 如果对该主机的特定端口号能建立一个socket,则说明该主机的该端口在使用. import java.i

对Ansible二次开发来检查服务器的Java程序占用端口数量

一 应用场景描述 有这个么一个需求:对很多台服务器的Java程序所占用的端口数量与正常的值进行对比确认. 可以使用如下命令得到结果: netstat -tulnp|grep java|wc -l 但是服务器很多,每台手动去执行这条命令是不现实的.于是想到使用Ansible批量去执行,Ansible使用paramiko去ssh登录服务器执行命令,并使用mutilprocessing实现多进程ssh登录. 二 代码实现 如果直接使用Ansible去执行,不作任何处理的话.执行情况是这样的: # an

nc命令检查端口是否存活脚本

nc命令检查端口是否存活 #!/bin/bash for IP in `cat /log/ip_ubt.txt` do IPP="$IP 22" /bin/nc -v -w 5 -z $IPP > /dev/null 2>&1 if [ $? -eq 0 ];then echo $IPP:ok >> /log/ssh_22_ok.txt echo $IP >> /log/ssh_22.txt fi done

使用Java开发多线程端口扫描工具(二)

一 介绍 这一篇文章是紧接着上一篇文章(http://www.zifangsky.cn/2015/12/使用java开发多线程端口扫描工具/)写的,端口扫描的原理不用多少,我在上一篇文章中已经说过了,至于目的大家都懂得.在这一篇文章里,我主要是对端口扫描工具的继续完善,以及写出一个比较直观的图形界面出来,以方便我们测试使用.界面如下: 这个工具主要是实现了以下几点功能:(1)两种扫描方式,一种是只扫描常见端口,另一种是设置一个起始和结束端口,依次探测.当然,原理很简单,用for循环就可以了:(2

BASH SHELL下两个用于检查端口情况的脚本

这几天需要做Linux的TCP端口检查脚本,发现netstat.nc命令虽好,但不够直观,而且端口多了检查起来有点麻烦,动手学做了两个脚本.一个是用参数形式检查端口情况,另一个使用配置文件扫描端口.记录下来方便以后使用. 一.nc_check.sh #!/bin/bash cat ./check_port|while read line do  nc -z `uname -n` $line >/dev/null 2>&1  if [ $? -eq 0 ];then   echo &qu

Linux中引号的一些作用和它们的区别以及检查端口的一些命令与方法

今天分享一下Linux中单引号.双引号.反引号的区别,单引号的作用就是 单引号里面的内容会原封不动的输出 (所见所得),双引号 与单引号类似 不同的就是里面的特殊符号会被解析(运行),反引号 优先执行命令.再说一下检查端口的一些命令及方法,首先就是要检查机房的网络是否有故障,这里要用到的命令就是tracert -d ,然后再检查sshd是否在运行 ,这里我们可以用1.telnet/nc 2.nmap 3.ss -lntup进行查看. 原文地址:http://blog.51cto.com/1386

java异常—检查异常(checked exception)和未检查异常(unchecked exception)

网易面试要我画异常的结构图,什么是检查异常,什么是非检查异常,我当时的表情是这样的,.我看过,忘了.没办法,继续看,写博客掌握. 先来看看异常的结构图,建议你结合JDK一起看. 可以看出异常的家族势力庞大,通常我们说的异常是包括exceptio和error. Exception家族我们恐怕见的不少,但是error家族我们可能就没什么印象了,下面我来说说这两个类的区别: Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题.大多数的错误与代码编写者执行的操作无关,而是表示代码运行

【Java】检查型异常和非检查型异常

检查型异常(CheckedException)在Java中所有不是RuntimeException派生的Exception都是检查型异常.当函数中存在抛出检查型异常的操作时该函数的函数声明中必须包含throws语句.调用改函数的函数也必须对该异常进行处理,如不进行处理则必须在调用函数上声明throws语句. 检查型异常是JAVA首创的,在编译期对异常的处理有强制性的要求.在JDK代码中大量的异常属于检查型异常,包括IOException,SQLException等等. 非检查型异常(Unchec

JAVA 双重检查锁定和延迟初始化

双重检查锁定的由来在Java程序中,有时需要推迟一些高开销的对象的初始化操作,并且只有在真正使用到这个对象的时候,才进行初始化,此时,就需要延迟初始化技术.延迟初始化的正确实现是需要一些技巧的,否则容易出现问题,下面一一介绍. 方案1 public class UnsafeLazyInit{ private static Instance instance; public static Instance getInstance(){ if (instance == null){ instance