Java 学习,查看端口使用与否

server/2025/3/19 5:04:15/

Java查看端口是否已被使用,通常涉及尝试绑定一个 ServerSocket 到指定的端口,并捕获可能抛出的 IOException 异常。如果绑定成功,则说明端口未被使用;如果抛出异常,则说明端口已被占用。

基本概念:

  • 端口(Port)
    • 端口是计算机通信中的一个逻辑概念,用于区分同一台计算机上的不同网络服务。
    • 每个网络服务(如HTTP服务、数据库服务等)都会绑定到特定的端口上,客户端通过指定端口来访问相应的服务。
  • ServerSocket
    • ServerSocket 是 Java 提供的一个类,用于创建服务器端的套接字。
    • 通过 ServerSocket,可以监听指定端口上的连接请求,并接受来自客户端的连接。
  • 异常处理
    • 当尝试绑定一个已被使用的端口时,ServerSocket 的构造函数会抛出 IOException 异常。
    • 通过捕获这个异常,可以判断端口是否已被占用。

示例:

import java.io.IOException;
import java.net.ServerSocket; 
public class PortChecker {
 
    /**
     * 检查端口是否被使用
     * @param port 端口号
     * @return 端口未被使用,返回true;否则返回false
     */
    public static boolean isPortInUse(int port) {
        boolean isInUse = true;
        ServerSocket socket = null;
        try {
            // 绑定ServerSocket到端口
            socket = new ServerSocket(port);
            // 绑定成功,则端口未被使用
            isInUse = false;
            // 关闭ServerSocket
            socket.close();
        } catch (IOException e) {
            // 如果抛出IOException,端口被使用
            isInUse = true;
        } finally {
            if (socket != null && !socket.isClosed()) {
                try {
                    socket.close();
                } catch (IOException ex) {
                    // 处理关闭Socket时的异常
                    ex.printStackTrace();
                }
            }
        }
        return isInUse;
    }
 
    public static void main(String[] args) {
        int portToCheck = 8080; // 检查的端口号
        if (isPortInUse(portToCheck)) {
            System.out.println("端口 " + portToCheck + " 已被使用");
        } else {
            System.out.println("端口 " + portToCheck + " 未被使用");
        }
    }
}

 


http://www.ppmy.cn/server/176154.html

相关文章

SpringBoot 和vue前后端配合开发网页拼图10关游戏源码技术分享

今天分享一个 前后端结合 的网页游戏 开发项目源码技术。 这也是我第一次写游戏类的程序,虽然不是特别复杂的游戏,但是是第一次写,肯定要记录一下了,哈哈。 游戏的内容 就是 我们显示中玩的那个 拼图碎片的 游戏,类似下…

网络安全证书培训机构有哪些

一、前言少叙 记得刚入行的时候,想考一个证书来装装门面,结果发现费用太高了,比当时一个月的工资都高,感叹网络安全这帮人真舍得花钱,遂放弃。后来入职网络安全公司,考了一个CISP,在工作中逐渐…

从零开始 | C语言基础刷题DAY3

❤个人主页&#xff1a;折枝寄北的博客 目录 1.打印3的倍数的数2.从大到小输出3. 打印素数4.打印闰年5.最大公约数 1.打印3的倍数的数 题目&#xff1a; 写一个代码打印1-100之间所有3的倍数的数字 代码&#xff1a; int main(){int i 0;for (i 1; i < 100; i){if (i % …

设计模式 二、创建型设计模式

GoF是 “Gang of Four”&#xff08;四人帮&#xff09;的简称&#xff0c;它们是指4位著名的计算机科学家&#xff1a;Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides。他们合作编写了一本非常著名的关于设计模式的书籍《Design Patterns: Elements of Reusable…

人工智能辅助 3D 建模:Claude + Blender MCP 体验

作者提供的图片 大约六年前&#xff0c;我曾把玩Blender作为一项业余爱好。虽然我热爱它带来的创意可能性&#xff0c;但我总觉得学习曲线陡峭且耗费时间。最近&#xff0c;我发现了Blender MCP&#xff0c;它通过模型上下文协议&#xff08;Model Context Protocol&#xff0…

C#-委托delegate

一.C#-委托delegate C#中委托即C中函数指针,通过delegate关键字可声明一个代理.代理可像指针一样作为参数传递和调用. <1.声明一个代理类型 class Test{public delegate string CreateNativeString(); }<2.创建代理变量 class Main{public Test.CreateNativeString poi…

JAVA(8)-数组

一.数组&#xff1a;可以存多种数据的容器 二.数组初始化 &#xff08;1&#xff09; 静态初始化 三.数组元素访问 数组名【索引】 把数据存储到数组中 四.数组遍历&#xff1a;取出数据 调用方式&#xff1a;数组名.length 自动快速生成&#xff1a;数组名.fori 五.数…

CVE-2017-5645(使用 docker 搭建)

介绍: 是一个与 Apache Log4j2 相关的安全漏洞,属于远程代码执行,它可能允许攻击者通过构造恶意的日志信息 在目标系统上执行任意代码 Log4j2 介绍 Log4j2 是 Apache 的一个日志记录工具,属于 Java 应用的日志框架,它是 Log4j 的升级版,性能更好,功能更多.它被广泛的适用于 J…