Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ServerSocket端口问题(java.net.BindException:地址已在使用中:JVM\u Bind)_Java_Sockets_Netbeans_Serversocket - Fatal编程技术网

ServerSocket端口问题(java.net.BindException:地址已在使用中:JVM\u Bind)

ServerSocket端口问题(java.net.BindException:地址已在使用中:JVM\u Bind),java,sockets,netbeans,serversocket,Java,Sockets,Netbeans,Serversocket,我正在使用套接字在Java上构建一个简单的客户机/服务器程序。我已经学习了一些关于创建一个简单的客户机/服务器程序的教程,这已经让我走了这么远,但是当我尝试运行我的服务器类时,它要么在我键入某些端口时冻结,什么也不做,要么在一些其他端口上,它给我一个异常java.net.BindException:Address ready in use:JVM\u Bind 下面是我的服务器类的一些关键部分 public void start() throws IOException { isRunn

我正在使用套接字在Java上构建一个简单的客户机/服务器程序。我已经学习了一些关于创建一个简单的客户机/服务器程序的教程,这已经让我走了这么远,但是当我尝试运行我的服务器类时,它要么在我键入某些端口时冻结,什么也不做,要么在一些其他端口上,它给我一个异常java.net.BindException:Address ready in use:JVM\u Bind

下面是我的服务器类的一些关键部分

public void start() throws IOException {
    isRunning = true;
    serverSocket = new ServerSocket(getPort());
    while (isRunning) {
        try {
            clientConnection();
            setupStreams();
        } catch (IOException ex) {
            addOutput("Connection unsuccessful.");
            System.out.println(ex);
            System.exit(1);
        }
    }
}

private void clientConnection() throws IOException {
    addOutput("Listening for client...");
    socket = serverSocket.accept();
    addOutput("Connection successful."); // print out username which connected
}

private void setupStreams() throws IOException {
    serverIn = new ObjectInputStream(socket.getInputStream());
    serverOut = new ObjectOutputStream(socket.getOutputStream());
}

private void btnConnectActionPerformed(ActionEvent evt) {                                           
    if (evt.getSource() == this.btnConnect) {
        try {
            start();
        } catch (IOException ex) {
            System.out.println(ex);
        }
    }
}  
正如我所说,我遵循了教程,与它们相比,我所做的没有太大区别,但我遇到了问题,我的服务器什么都不做,并且冻结,或者给出了例外

有什么想法吗

java.net.BindException: Address already in use: JVM_Bind
当您试图使用已被系统上的其他程序或冻结的其他程序实例使用的端口号运行程序时发生

至于冻结,

socket = serverSocket.accept();
将等待客户端连接到此套接字。如果没有另一个程序作为客户端运行,这个程序将冻结等待一个

当您试图使用已被系统上的其他程序或冻结的其他程序实例使用的端口号运行程序时发生

至于冻结,

socket = serverSocket.accept();

将等待客户端连接到此套接字。如果没有另一个程序作为客户端运行,这个程序将冻结等待一个。

我对代码做了一些修改,似乎已经解决了这个问题。主要的修复方法是在构造函数中设置服务器,这似乎已经修复了它。尽管如此,我仍然不明白为什么我以前的做法不起作用。但是,它现在可以工作了。

我对代码做了一些改动,似乎已经解决了这个问题。主要的修复方法是在构造函数中设置服务器,这似乎已经修复了它。尽管如此,我仍然不明白为什么我以前的做法不起作用。但是,它现在可以工作。

只有当服务器/tomcat使用相同的端口时,上述错误才会出现

在Mac上,请使用以下命令:

I514W:~ skumar$ lsof -i :8082
COMMAND   PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    45270 skumar47  411u  IPv6 0x34323c1bdd54744d      0t0  TCP *:us-cli 
(LISTEN)

I514W:~ skumar$ kill 45270

第一个onelsof-i:8082将列出在该端口上运行的进程。第二个kill 45270将终止进程,端口将空闲。一旦重新启动tomcat或使用该端口的任何其他进程,它就会工作。

只有当服务器/tomcat使用同一端口时,上述错误才会出现

在Mac上,请使用以下命令:

I514W:~ skumar$ lsof -i :8082
COMMAND   PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    45270 skumar47  411u  IPv6 0x34323c1bdd54744d      0t0  TCP *:us-cli 
(LISTEN)

I514W:~ skumar$ kill 45270

第一个onelsof-i:8082将列出在该端口上运行的进程。第二个kill 45270将终止进程,端口将空闲。一旦重新启动tomcat或使用该端口的任何其他进程,它就会工作。

冻结到底是什么意思?它能打印出什么吗?您是否尝试过与客户联系?你可以把telnet当作一个简单的客户端…你说的冻结到底是什么意思?它能打印出什么吗?您是否尝试过与客户联系?你可以使用telnet作为一个简单的客户端…我执行了一次程序,服务器启动了,然后我关闭了它,当我试图再次启动它时,我得到了这个错误。我们如何才能看到哪个程序或进程正在侦听此端口?在windows上,我执行了一次程序,服务器启动了,然后我关闭了它,当我试图再次启动它时,我得到了这个错误。我们如何才能看到哪个程序或进程正在侦听此端口?在窗户上。