我正在用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/