Networking 用java运行客户机-服务器程序

Networking 用java运行客户机-服务器程序,networking,client-server,Networking,Client Server,我用java编写了一个简单的客户机-服务器应用程序。当我尝试在服务器上运行客户端时,我得到以下异常。 线程“main”java.net.BindException中的异常:地址已在使用中:JVM\u Bind 位于java.net.DualStackPlainSocketImpl.bind0(本机方法) 位于java.net.DualStackPlainSocketImpl.socketBind(未知源) 位于java.net.AbstractPlainSocketImpl.bind(未知源)

我用java编写了一个简单的客户机-服务器应用程序。当我尝试在服务器上运行客户端时,我得到以下异常。 线程“main”java.net.BindException中的异常:地址已在使用中:JVM\u Bind 位于java.net.DualStackPlainSocketImpl.bind0(本机方法) 位于java.net.DualStackPlainSocketImpl.socketBind(未知源) 位于java.net.AbstractPlainSocketImpl.bind(未知源) 位于java.net.PlainSocketImpl.bind(未知源) 位于java.net.ServerSocket.bind(未知源) 位于java.net.ServerSocket。(未知源) 位于java.net.ServerSocket。(未知源) 位于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());
}
}


}根据API,一个例外

表示尝试将套接字绑定到本地地址时出错,并且
港口。通常,端口正在使用中,或者无法分配请求的本地地址

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

注:


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

我已经多次遇到这个问题。您的服务器中的套接字可能仍然具有您在使用中指定的端口,或由另一个进程绑定的端口(在我的情况下,我总是使用未正确终止的服务器执行的早期版本-我会使用未正确终止进程的Ctrl-C或Ctrl-Z)


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

您不能只使用任何随机端口而不知道它正在使用或免费

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

编辑:看看下面的链接,其中一个必须帮助你


那么如何删除此例外即使在我终止进程后,问题仍然存在。您正在终止哪个进程?serversocket 415是空闲的还是被其他进程使用?为了安全起见,我建议首先寻找一个空闲端口,然后在服务器中使用它。
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();
    }
}