开通一个服务器,单线程的
ServerSocket ss = new ServerSocket(port);
Socket socket = ss.accept();首先开一个客户端,显示连接成功,并且能从服务器接收数据,这时再开一个客户端,仍然显示连接成功,但不能接收数据。我想要的是第二个客户端开通时,不能连接服务器,抛出异常,怎么实现?

解决方案 »

  1.   

    比较笨的办法

    ServerSocket ss = new ServerSocket(port);
    boolean first = true;
    while (true) {
        Socket socket = ss.accept();
        if (first) {
            // first do
            first = false;
        } else {
            socket.close();
      
                  
      

  2.   


     ServerSocket ss = new ServerSocket(port);
     Socket socket = null;
     if(socket==null){
        ss.accept();
        socket.close();
     }else{
       throw new Exception("已经有一个连接"); 
     }
      

  3.   


    代码不对吧。 只能接收第一个socket.而不是接收一个socket。 接收到Socket给个标识示现在已有,用完了再把标识恢复。或者用同步来做,当前就只能有一个socket了。
      

  4.   

    会阻塞,不能accept,但其进入了ServerSocket ss的等待队列