我正在用Java在MyServer类的激活方法中编写服务器应用程序:

    System.out.println("The Base Station was activated");
    Socket s;       //Here it listens for new connections

    this.server = new ServerSocket(this.getPort());

    while(activated == true)
    {
        s = this.server.accept();
        ClientHandler ch = new ClientHandler(s);
        Thread servingThread = new Thread(ch);
        servingThread.start();
    }


它正在等待客户端连接,并产生一个线程来容纳每个客户端。我也想在我的GUI中支持停用按钮,但是我看不到如何在MyServerFrame类中定义的该按钮的ActionListener可以被调用并更改activated变量的状态。上面的服务器代码被困在accept中。我该如何克服这个问题?

最佳答案

您将必须在拥有停止按钮处理程序的类内(例如,通过将MyServer实例传递给MyServerFrame实例)访问服务器套接字,并在处理程序内部访问该套接字,以使接受接受的调用返回,然后您可以退出while循环。

因此,在处理程序内部,您应该可以执行以下操作:

myServer.setActivated(false);
myServer.closeSocket(); // inside you have this.server.close();
// assuming you have passed the MyServer object to the form.

关于java - 用Java中的按钮终止服务器程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8354892/

10-10 18:50