当前位置: 首页 > 面试题库 >

线程“主” java.net.BindException中的异常:地址已在使用中-仅在Netbeans中出错

陶高扬
2023-03-14
问题内容

在我的机器上,以下代码在Eclipse中编译,但在Netbeans中引发异常。错误消息显示“线程“主”中的异常java.net.BindException:地址已在使用中”。

Netbeans中正确的配置是什么才能使此代码编译?问题似乎与我有两个主要职能有关。如果我开始运行其中一个应用程序,则第二个应用程序将无法启动,并引发上述异常。

服务器.java

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

public class Server {

    public static void main(String[] args) throws Exception {

        Server myServ = new Server();
        myServ.run();

    }

    public void run() throws Exception {

        ServerSocket mySS = new ServerSocket(9999);
        Socket SS_accept = mySS.accept();

        InputStreamReader mySR = new InputStreamReader(SS_accept.getInputStream());
        BufferedReader myBR = new BufferedReader(mySR);

        String temp = myBR.readLine();
        System.out.println(temp);

    }

}

客户端程序

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

public class Client {

    public static void main(String[] args) throws Exception {

        Client myCli = new Client();
        myCli.run();

    }

    public void run() throws Exception {

        Socket mySkt = new Socket("localhost", 9999);
        PrintStream myPS = new PrintStream(mySkt.getOutputStream());

        myPS.println("Hello server");

    }

}

问题答案:

实现我想要的方法是右键单击Server.java要运行的特定类(例如),然后选择“运行此文件”。这使我只能运行服务器应用程序。然后,对另一个文件执行相同的过程Client.java

但是,在这种特殊情况下,Netbeans有点令人迷惑/欺骗。Netbeans的作用是运行该Server进程,但是将该进程标记为项目的名称(例如MyTestNetworkingProject),并在其上加上运行编号,从而给我们`MyTestNetworkingProject
run

run #2`。然后,它会在屏幕底部向下生成第二个结果窗口,因为当创建新流程时会在新选项卡中生成这些结果。

由于特定代码的性质,我想在结果窗口中看到以确认我的应用程序正在运行,这是我想观察Server.java结果窗口(在本例中为`MyTestNetworkingProject
run

1`)。给定我上面概述的运行不同文件的确切步骤顺序,运行#2是最后一个运行过程,因此位于顶部的选项卡覆盖了运行#1选项卡。我可以单击运行#1并在控制台(“

Hello服务器”)中查看我希望看到的结果,但是我只需要知道/记住`MyTestNetworkingProject run

1`代表服务器应用程序而不是客户端应用程序的结果即可。

不爽,IMO。



 类似资料:
  • 在我的机器上,以下代码在Eclipse中编译,但在Netbean中引发异常。错误消息说“线程中的异常”main“java.net.BindException:地址已在使用”。 在 Netbeans 中,要使此代码编译的正确配置是什么?似乎问题与我有两个主要功能的事实有关。如果我开始运行其中一个应用程序,则第二个应用程序将无法启动,从而引发上面发布的异常。 服务器.java Client.java

  • 我试图在Ubuntu 12.04中运行以下命令 并得到以下错误 在检查8080端口时,输出是 我的问题 为什么我会犯错误,以及如何消除这个错误?

  • 我尝试在我的linux服务器上安装java HTTP API。我尝试从命令pompt执行此命令以运行服务: 那么我有一个错误: 线程“main”java中出现异常。网BindException:地址已在sun上使用。尼奥。中国网。bind0(本机方法)在sun。尼奥。中国网。bind(Net.java:463)位于sun。尼奥。中国网。在sun上绑定(Net.java:455)。尼奥。总经理塞尔索

  • 问题内容: 以下代码运行了1个小时,然后关闭: 当我重新运行同一件事时,它失败了: 大约需要3至4分钟才能再次成功执行。关闭后如何使它立即工作? 跟进: 问题答案: 您会看到setReuseAddress(true)的调用为时已晚,即在绑定引发异常之后。 您可以通过三个步骤创建一个未绑定的ServerSocket,使其可重用,然后将其绑定。

  • 服务器程序: 客户端程序: 当我执行这个程序时。我收到了这样的错误“java.net.BindException:地址已在使用中:JVM_Bind”但在它正常工作之前。有人能帮我解决这个问题吗?

  • 问题内容: 在Eclipse中,出现此错误: 我不知道为什么现在出现,但几个小时前就可以运行了。我需要重启机器吗?我如何深入了解它?我感谢任何提示或建议。 问题答案: 是的,你有另一个绑定到同一端口的进程。 每当我遇到JVM_BIND错误时,Windows Sysinternals的TCPView(仅Windows)都是我最喜欢的应用程序。它显示了哪些进程正在侦听哪个端口。它还提供了一个方便的上下