我现在在做一个Socket通信方面的东西,代码如下:import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class Server {
public static boolean isAlive = true;
public static void main(String args[]){
ServerSocket server = null;
Socket s =null;
try{
server = new ServerSocket(4700);
while(isAlive){
s = server.accept();
new ServerThread(s).start();
}
s.close();
server.close();
}catch(IOException e){
e.printStackTrace();
}

}}问题:循环回一直执行,我要是想停止的话,需要强行关掉,不知道有没有人知道怎么关ServerSocket?
ServerThread是和Socket通信的线程。

解决方案 »

  1.   

    难道不会阻塞在这s = server.accept();?
      

  2.   

    开一个线程thread维护serversocket
    因为serversocket平时是出于阻塞状态,所有可以调用
    thread.intterput()方法停止阻塞,并中断程序
      

  3.   

    想办法把isAlive设成false不就行了。
    而且你的isAlive是一个public static , 完全可以在另外一段程序里,通过Server.isAlive=false不就行了。
    你写的是一个服务器程序,服务器程序程序一般不会关掉,最多就是重启,那你的问题就不存在了。