我现在做了一个服务器,当他在监听的时候可以接收到客户端的连接.问题,
如果让服务器一次只能接受一个客户端的连接,当服务器与一个客户端连接的时候,如果其他客户端请求到来,就拒绝掉.怎么实现?我现在用置位的方法可以设定服务器一次只能和一个客户端连接,但是有第2个客户端来到时,这个客户端会等待,直到第一个断掉,第2个就会连到服务器上.我怎么能直接把第2个拒绝掉呢?不知道我说明白了吗?

解决方案 »

  1.   

    zp_haha() 你说的不太明白具体点
      

  2.   

    定义一个maxsize,监听到的连接放到一个map中,当map.size()>=maxsize时
                      PrintWriter out = new PrintWriter(s.getOutputStream());
    out.print("Connection refused; "
      + "the server is busy; please try again later.\n");
    out.flush();
    s.close();
    当然了,接收连接处理连接要分开
      

  3.   

    大哥 如果 你这里的s是监听的socket的话,那么执行完s.close();当前正在连接的就不能收法数据了.
      

  4.   

    在你的服务器端定义一个全局boolean变量初始为true,
    启动第一个服务线程,运行前,修改其值为false,关闭的时间修改其值为true,
    后面每启动一个服务线程就检查这个变量,为false则等待,关闭的时间就修改其值为true,
    大概这样,参考下
      

  5.   

    我就是这么做的,和我上边说的一样,如果close,那么当前的连接也会关掉.
      

  6.   

    你是说服务器也会关闭连接吗?
    把对客户端的监听放在一个循环里就可以了,
     
    例:
     Socket you  = null;
     ServerSocket server = new ServerSocket(2007);  while(true)
    {
        you = server.accept();
        if(you != null)    // 启动服务线程
     }