我写了一个服务器端程序,服务器这边有两个按钮(启动,断开)。因为服务器要连接多个客户端的请求所以用了while循环,只要有客户端请求就分一个线程与之连接。运行后发现,“启动”以后程序就死了,断开按钮也不好使了,关闭也关闭不了。是不是因为死循环的原因,怎么解决。高手来帮帮忙啊

解决方案 »

  1.   


    这是“启动”时的代码:
    public starServer(){
    ServerSocket rServer=null;
    Socket request=null;  //请求套接字
    Thread receiveThread=null;

    try{
    rServer=new ServerSocket(4600);
    System.out.println("Welcome to Server");
    shareLinkList=new ShareLinkList();
    while(true){

    request=rServer.accept();

    receiveThread=new serverThread(request,shareLinkList);//生成serverThread实例

    receiveThread.start();//启动serverThread线程,执行具体的方法



    }//while


    }catch(IOException e){

    System.out.println(e.getMessage());

    }




    }//ServerShare()
      

  2.   

    设一个构造方法吧,把while循环放到线程的run()方法里面,在构造方法里启动线程
      

  3.   

    你的启动方法本身也应该放到一个线程里去,而不是构造方法。因为request=rServer.accept(); 会使调用它的线程阻塞,所以
    就会出现你说的卡死的现象了