0

我用java编写了一个简单的客户端服务器应用程序。当我尝试在服务器上运行客户端时,出现以下异常。线程“主”java.net.BindException 中的异常:地址已在使用中:java.net.DualStackPlainSocketImpl.bind0 处的 JVM_Bind(本机方法)java.net.AbstractPlainSocketImpl.bind 处的 java.net.DualStackPlainSocketImpl.socketBind(未知来源) (Unknown Source) at java.net.PlainSocketImpl.bind(Unknown Source) at java.net.ServerSocket.bind(Unknown Source) at java.net.ServerSocket.(Unknown Source) at java.net.ServerSocket.(Unknown Source)在 DateServer.main(DateServer.java:8)

我已经添加了所有的 jar 文件,检查了如何删除这个异常来执行我的代码。

import java.util.Scanner;
import java.net.Socket;

class DateClient {
public static void main(String[] args) throws java.io.IOException {
    String host = "localhost";
    int port = Integer.parseInt("415");
    Socket server = new Socket(host, port);
    Scanner scan = new Scanner(server.getInputStream());
    System.out.println(scan.nextLine());
}

}

import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

class DateServer {
public static void main(String[] args) throws java.io.IOException {
    ServerSocket s = new ServerSocket(415);
    while (true) {
        Socket incoming = s.accept();
        System.out.println(incoming);
        PrintWriter toClient = new PrintWriter(incoming.getOutputStream());
        toClient.println(new Date());
        toClient.flush();
        incoming.close();
    }
}

}

4

3 回答 3

0

根据 API,BindException

Signals that an error occurred while attempting to bind a socket to a local address and port. Typically, the port is in use, or the requested local address could not be assigned

基本上,该端口可能正在被另一个进程使用,甚至可能由于不干净的关闭而被同一应用程序的另一个实例使用。此链接可以帮助您排除故障。

笔记:

运行 netstat -an 命令的发布结果似乎验证端口 8085 正在被多个进程使用,这将导致您遇到的 BindException

于 2013-11-11T04:29:27.710 回答
0

这个问题我遇到过好几次了。大概在您的服务器中的套接字仍然具有您在使用中或由另一个进程指定的端口(在我的情况下,我总是有一个以前版本的服务器执行没有被bound正确杀死 - 我会这样做Ctrl-CCtrl-Z没有正确终止进程)。

尝试运行命令kill %1或其他命令以完全摆脱先前运行的进程。这通常对我有用!:) 祝你好运!

于 2013-11-11T04:33:51.547 回答
0

您不能在不知道它正在使用或空闲的情况下使用任何随机端口。

使用 netstat -an 检查哪些端口正在使用并使用其中一个空闲的端口。(对于 windows,在 cmd 中使用 netstat -an)

编辑:看看下面的链接,其中一个必须帮助你 如何解决“java.net.BindException:地址已在使用:JVM_Bind”错误?

地址已在使用中:JVM_Bind

于 2013-11-11T04:34:27.843 回答