当前位置: 首页 > 知识库问答 >
问题:

线程"main"java.net.BindException中的异常:地址已在使用中-仅在Netbean中出错

师建德
2023-03-14

在我的机器上,以下代码在Eclipse中编译,但在Netbean中引发异常。错误消息说“线程中的异常”main“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);

    }

}

Client.java

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");

    }

}

共有3个答案

云慈
2023-03-14

如果你在Windows操作系统中写这个,你可以使用“网站-nao”来查看哪个进程使用9999端口。如果这是一些不重要的进程,你可以杀死这个过程。否则,您可以更改普拉格的端口。

淳于泓
2023-03-14

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

然而,在这种特殊情况下,Netbean有点令人困惑/欺骗。Netbean所做的是它运行Server进程,但将该进程标记为项目的名称(例如MyTestNetworkingProject)并在其上添加一个运行号,从而为我们提供MyTestNetworkingProject run#1(它实际上忽略了第一个进程的#1)。然后,如果我转到Client.java文件并选择“运行此文件”,它会生成第二个进程,MyTestNetworkingProject run#2。然后,它会在屏幕底部生成第二个结果窗口,因为它会在新进程创建时在新选项卡中生成这些结果。

由于我的特定代码的性质,我想在结果窗口中看到的是,为了确认我的应用程序正在工作,我想观察服务器.java结果窗口(在本例中是 MyTestNetworkingProject 运行 #1)。根据我上面概述的运行不同文件的确切步骤顺序,运行#2是最后一个运行过程,因此是顶部的选项卡,覆盖了运行#1选项卡。我可以单击运行 #1 并查看我希望在控制台中看到的结果(“你好服务器”),但我只需要知道/记住 MyTestNetworkingProject 运行 #1 代表服务器应用程序,而不是客户端应用程序。

不酷,IMO。

史经业
2023-03-14

这个问题是由于您让服务器的一个实例运行,然后启动了另一个实例。

 类似资料:
  • 问题内容: 在我的机器上,以下代码在Eclipse中编译,但在Netbeans中引发异常。错误消息显示“线程“主”中的异常java.net.BindException:地址已在使用中”。 Netbeans中正确的配置是什么才能使此代码编译?问题似乎与我有两个主要职能有关。如果我开始运行其中一个应用程序,则第二个应用程序将无法启动,并引发上述异常。 服务器.java 客户端程序 问题答案: 实现我想

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

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

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

  • 我在线程“main”java中遇到异常。错误:未解析编译。 我做错了什么? 线程“main”中出现异常: java.lang.错误:未解决的编译问题: 对于类型在

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