java socket-服务器端 同一个端口 new两次.md[亲测有效]

java socket-服务器端 同一个端口 new两次.md[亲测有效]报错端口被占用应用层代码源码分析原因分析端口被占用

报错

端口被占用

java.net.BindException: Address already in use

	at java.net.PlainSocketImpl.socketBind(Native Method)

	at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)

	at java.net.ServerSocket.bind(ServerSocket.java:376)

	at java.net.ServerSocket.<init>(ServerSocket.java:237)

	at java.net.ServerSocket.<init>(ServerSocket.java:128)

	at serverMaxConn.Server.main(Server.java:21)


应用层代码

//创建服务器端套接字

				ServerSocket ss = new ServerSocket(8888);



源码分析

public

class ServerSocket implements java.io.Closeable {


public void bind(SocketAddress endpoint, int backlog) throws IOException {

        if (isClosed())

            throw new SocketException("Socket is closed");

        if (!oldImpl && isBound())

            throw new SocketException("Already bound");

        if (endpoint == null)

            endpoint = new InetSocketAddress(0);

        if (!(endpoint instanceof InetSocketAddress))

            throw new IllegalArgumentException("Unsupported address type");

        InetSocketAddress epoint = (InetSocketAddress) endpoint;

        if (epoint.isUnresolved())

            throw new SocketException("Unresolved address");

        if (backlog < 1)

          backlog = 50;

        try {

            SecurityManager security = System.getSecurityManager();

            if (security != null)

                security.checkListen(epoint.getPort());

            getImpl().bind(epoint.getAddress(), epoint.getPort());

            getImpl().listen(backlog);

            bound = true;

        } catch(SecurityException e) {

            bound = false;

            throw e;

        } catch(IOException e) {

            bound = false;

            throw e; //捕获异常

        }

    }


abstract class AbstractPlainSocketImpl extends SocketImpl

{




/** * Binds the socket to the specified address of the specified local port. * @param address the address * @param port the port */

    protected synchronized void bind(InetAddress address, int lport)

        throws IOException 

    {

       synchronized (fdLock) {

            if (!closePending && (socket == null || !socket.isBound())) {

                NetHooks.beforeTcpBind(fd, address, lport);

            }

        }

        socketBind(address, lport); //发生异常 向上抛出异常

        if (socket != null)

            socket.setBound();

        if (serverSocket != null)

            serverSocket.setBound();

    }


原因分析

端口被占用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13412.html

(0)

相关推荐

  • 连锁便利店管理系统的六大作用[亲测有效]

    连锁便利店管理系统的六大作用[亲测有效]连锁便利店是一种商业模式,是以连锁加盟的方式扩大规模和影响力的零售业。随着科技的不断进步,连锁便利店管理系统已经成为了便利店管理的一种重要手段。

    2023-07-03
    129
  • 让用户输入的神奇函数

    让用户输入的神奇函数input()是Python中用于获取用户输入的函数,它会阻塞程序的执行,直到用户输入完毕并回车后才会继续执行程序。最基本的使用方法就是直接调用这个函数,然后等待用户输入:

    2024-02-28
    99
  • 「漫画」低代码开发平台之前世今生

    「漫画」低代码开发平台之前世今生2014年,“低代码”概念源于Gartner提出“Lowcode”,当然,此“Low”非彼“Low”,它意指一种快速开发的方式,使用最少的代码、

    2022-12-14
    211
  • HDFS 常用操作命令

    HDFS 常用操作命令HDFS 文件操作命令 注,其实常用命令不用网上搜,和linux下的命令很类似,触类旁通,直接在linux 上 hadoop fs 看一下就行了,不需要刻意去记 我把 linux 上的 help 列举

    2023-03-18
    153
  • 读MySQL5.7 官方文档11.3.2 The CHAR and VARCHAR Types章节的总结「建议收藏」

    读MySQL5.7 官方文档11.3.2 The CHAR and VARCHAR Types章节的总结「建议收藏」作者:魏新平,知数堂第5期MySQL实战班学员,第10期MySQL优化班学员,现任职助教。 varchar(n) 和char(n)的最大长度 相信作为dba,经常会被问到这个问题吧。那什么是最大长度…

    2023-02-05
    151
  • [20191115]oracle实例占用内存计算.txt

    [20191115]oracle实例占用内存计算.txt[20191115]oracle实例占用内存计算.txt–//以前学习oracle数据库时,总想了解实例占用内存多少,我曾经在一些会议底下问过一位高手,对方说计算这个相对很难,许多东西是共享的.–

    2022-12-18
    144
  • java callable接口和runnable_java多线程

    java callable接口和runnable_java多线程在Java 1.5以前,创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。无论我们以怎样的形式实现多线程,都需要调用Thread类中的start方法去向操作系统请求io,cup等资源。因为线程run方法没有返回值,如果需要获取执行结果,就必须…

    2023-08-09
    139
  • 利用pip安装cv2的步骤

    利用pip安装cv2的步骤在计算机视觉及图像处理领域,cv2是一款非常常用的Python库。它可以在Python中调用OpenCV(开源计算机视觉库),让Python开发者更加便途地完成图像和视频处理相关的任务。
    在本篇文章中,我们将通过几个方面详细阐述利用pip安装cv2的步骤。通过本文的学习,读者将会掌握如下知识:

    2024-05-01
    74

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注