admin管理员组

文章数量:1441528

java:判断某个端口是否被占用,以及递归找到可使用端口

构思

  • 配置文件处有默认端口,一般来说用户使用时会参考默认端口依次递增,所以我这里找可用端口的思路也是会根据默认端口依次递增去递归找到未被占用端口

代码实现

代码语言:javascript代码运行次数:0运行复制
package test;

import java.io.IOException;
import java.*;
import java.util.Enumeration;

public class GetLocalHost {
    public static void main(String[] args) throws Exception {
        int inputPort = 8400;
        System.out.println("输入端口:" + inputPort + ", 递增递归找到可用端口为:" + getUsablePort(inputPort));
    }

    /**
     * 根据输入端口号,递增递归查询可使用端口
     * @param port  端口号
     * @return  如果被占用,递归;否则返回可使用port
     */
    public static int getUsablePort(int port) throws IOException {
        boolean flag = false;
        Socket socket = null;
        InetAddress theAddress = InetAddress.getByName("127.0.0.1");
        try{
            socket = new Socket(theAddress, port);
            flag = true;
        } catch (IOException e) {
            //如果测试端口号没有被占用,那么会抛出异常,通过下文flag来返回可用端口
        } finally {
            if(socket!=null) {
            //new了socket最好释放
                socket.close();
            }
        }

        if (flag) {
        //端口被占用,port + 1递归
            port = port + 1;
            return getUsablePort(port);
        } else {
        //可用端口
            return port;
        }
    }
}

运行结果

与实际相符,则正确


命令行判断某个端口是否被占用

  1. 命令行查询端口
代码语言:javascript代码运行次数:0运行复制
lsof -i:[端口号]
  1. kill掉该端口
代码语言:javascript代码运行次数:0运行复制
kill 3187244
  1. 再次查看端口就会发现已经被kill掉了
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2023-12-20,如有侵权请联系 cloudcommunity@tencent 删除异常javaport递归命令行

本文标签: java判断某个端口是否被占用,以及递归找到可使用端口