public void run() {

    Cliente c;

    while (TrataCliente.continua) {
      try {
        saida = new PrintStream(cliente.getOutputStream());
      } catch (IOException ex) {
        System.out.println("Falhou para tentar mandar mensagens!");
      }

      try {
        entrada = new Scanner(cliente.getInputStream());
      } catch (IOException ex) {
        System.out.println("Falhou para receber mensagens!");
      }

      while (entrada.hasNextLine() && TrataCliente.continua) {
        this.recebe = entrada.nextLine();
        if (Integer.parseInt(this.recebe) == 1) {
          // System.out.println("oi1");
          c = recebeCliente();
        }
        // System.out.println(this.recebe);

        if (Integer.parseInt(this.recebe) == 2) {
          boolean b;
          String usuario;
          String senha;

          // System.out.println("oi2");
          usuario = this.entrada.nextLine();
          senha = this.entrada.nextLine();
          b = tentarLogar(usuario, senha);
          saida.println(b);
          if (b == true) {
            saida.println(usuario);
          }
        }
        // System.out.println(this.recebe);

        if (Integer.parseInt(this.recebe) == 3) {
          // System.out.println("oi3");
          f.enviaProdutos(cliente);
        }
        // System.out.println(this.recebe);

        if (Integer.parseInt(this.recebe) == 4) {
          // System.out.println("oi4");
          this.nome = entrada.nextLine();
          // this.mail = entrada.nextLine();
          f.vendeProduto(nome, cliente);
        }
        // System.out.println(this.recebe);

      }
    }
  }
  /*
      Servidor recebe dados de um novo cliente
  */
  public Cliente recebeCliente() {
    Cliente c = new Cliente();
    Scanner entrada = null;
    String s;
    try {
      entrada = new Scanner(cliente.getInputStream());
    } catch (IOException ex) {
      System.out.println("Falhou para receber mensagens!" + ex.getMessage());
    }

    c.setNome(entrada.nextLine());
    c.setEndereço(entrada.nextLine());
    c.setTelefone(entrada.nextLine());
    c.setEmail(entrada.nextLine());
    c.setID(entrada.nextLine());
    c.setSenha(entrada.nextLine());

    f.adicionaListaClientes(c);

    return c;
  }
  public void run() {
    Funcionalidades mercado = new Funcionalidades();
    int flag = 0;
    int escolha = 0;
    String semUtilidade;
    Scanner s = new Scanner(System.in);

    try {
      mercado.preparaListProdutos("produtos.csv");
      mercado.preparaListClientes("clientes.csv");
      mercado.preparaHistorico("historicos.csv");
    } catch (FileNotFoundException ex) {
      System.out.println("Erro ao tentar abrir arquivo");
      return;
    }

    while (flag == 0) {
      System.out.println("Menu do servidor");
      System.out.println("1 - Adicionar um novo produto");
      System.out.println("2 - Modificar informacoes de um produto");
      System.out.println("3 - Listar todos os produtos");
      System.out.println("4 - Listar os produtos disponiveis");
      System.out.println("5 - Listar os produtos esgotados");
      System.out.println("6 - Remover um produto");
      System.out.println("7 - Listar clientes");
      System.out.println("8 - Imprimir histórico");
      System.out.println("9 - Sair do programa");

      while (!s.hasNextInt()) {
        semUtilidade = s.nextLine();
      }
      escolha = s.nextInt();

      switch (escolha) {
        case 1: // adiciona produto
          mercado.adicionaProduto();
          break;

        case 2: // modifica produto
          mercado.modificaProduto();
          break;

        case 3: // imprime todos os produtos
          mercado.imprimeTudo();
          break;

        case 4: // imprime produtos disponiveis
          mercado.imprimeTudoDisp();
          break;

        case 5: // imprime produtos esgotados
          mercado.imprimeTudoEsg();
          break;

        case 6: // remove um determinado produto
          mercado.removerProduto();
          break;

        case 7: // imprime na tela todos os clientes
          mercado.listaClientes();
          break;

        case 8: // imprime todo o historico
          mercado.imprimeTudoHistorico();
          break;

        case 9: // desliga servidor
          flag = 1;

          try {
            mercado.fechaArquivo("produtos.csv", "clientes.csv", "historicos.csv");
          } catch (IOException ex) {
            System.out.println("Erro ao tentar gravar o arquivo");
            return;
          } finally {
            TrataCliente.setContinua(false);
            // System.out.println(TrataCliente.getContinua());
            System.exit(0);
            return;
          }
      }
    }
  }
 /*
     Confere se usuario e senha existem na lista de clientes do servidor
     True existe usuario e senha coincide
     False caso contrario
 */
 public boolean tentarLogar(String usuario, String senha) {
   return (f.procuraCliente(usuario, senha));
 }