socket很简单,大致上是
class socket1{
...
public void startServer() {
try{
    server = new ServerSocket(port);
    while(true){
        socket = server.accept();
        ....
    }
}
}public static void main(){
socket1 s = new socket1();
s.startserver();
//??如何终止s??想控制这个socket安全结束,怎么做?最好像是结束这个进程那样
}
}

解决方案 »

  1.   

    如果在同个程序中,可以把  server = new ServerSocket(port);
      while(true){
      socket = server.accept();
    放在一个线程里,停掉这个线程就行了
    如果想在客户端停它,可以让客户端发一串特定的字符串,比如“stop”,当server接收到这串字符就退出break出循环
      

  2.   

    可以仿照 Tomcat 的关闭机制。再创建一个 Socket 的监听端口,用于监听关闭指令,当在这个端口上收到关闭指令时,就先拒绝新的连接,将已经在处理的连接完成后将整个服务关闭。
      

  3.   

    默认情况下,Tomcat 启用 8005 监听端口,当在 8005 上接收到 SHUTDOWN 字符串时就开始进行关闭工作。
      

  4.   

    同意。
    其实就是停thread的方式。
      

  5.   

    我搜了下,停thread好像也是不安全的,比较安全的做法是让run方法执行完。但如果public void run(){
    while(condition){socket = xx.accept();....
    }
    }我怎么保证一定跳出这个while,如果没有客户端请求,是不是就不走到while()里了?关于2楼的方法不懂,我现在用Timer,设个时间。到时间了就关掉socket。问题是我不知道怎么关socket