0

こんにちは、私はサーバーのこのコードを持っていて、ocupado(busy) が = 0 であるかどうかをチェックする if を追加しました。開いているビジー = 1 の場合はソケットを受け入れます。したがって、最初のユーザーが接続を終了するまで拒否しますが、動作しません...

import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

/**
 *
 * @author www
 */
public class ServidorTCPBasico {
static int ocupado = 0; // = busy var to check
  public static void main(String[] args) {

    try {

      // Instancia o ServerSocket ouvindo a porta 9000

      ServerSocket servidor = new ServerSocket(9000);

      System.out.println("Servidor ouvindo a porta 9000");

      while(true) {

        // o método accept() bloqueia a execução até que

        // o servidor receba um pedido de conexão
        Socket cliente = servidor.accept();
        if(ocupado == 0) { 

        int ocupado = 1;
        System.out.println("Cliente conectado: " + cliente.getInetAddress().getHostAddress());
System.out.println(ocupado);
        ObjectOutputStream saida = new ObjectOutputStream(cliente.getOutputStream());

        saida.flush();

//        saida.writeObject(new Date());
        saida.writeUTF("TEXTO TESTE PARA TRANSFERIR...");
        saida.close();

      //  cliente.close();

        }  else { 
            System.out.println("Ocupado");
          }

      }   
    }


    catch(Exception e) {

       System.out.println("Erro: " + e.getMessage());

    } 

    finally {
    }  


  }     

}

だから私の質問は、ソケットが一度に1つの接続のみを受け入れるようにする方法であり、ユーザーが確認ボックスで[OK]を押すと、サーバーは接続を閉じます..

確認ボックスなどの部分..追加します。私の問題は、クライアントが試行したときに接続を拒否する「ロジック」またはコマンドであり、後でクライアントで拒否された接続を処理します。

4

2 に答える 2