Travar Cliente - Sistemas Distrubuidos

2 respostas
java
M
import java.awt.HeadlessException;

import java.rmi.Naming;

import java.rmi.RemoteException;

import javax.swing.JOptionPane;

public class Cliente {
public static void main(String[] args) throws HeadlessException, NumberFormatException, RemoteException {

Interface controlador = null;
    int cont=0;

// ------------ - - - - - - - - - - - - - - - - Inicio: Escolha de Servidor ------------ - - - - - - - - - - - - - - - -

int opcao = 0;

    do {

        try {

            opcao = Integer.parseInt(JOptionPane.showInputDialog(null, "  1 - Servidor 1.\n\n  2 - Servidor 2.\n\n  3 - Sair da aplicação.", "Escolha de Servidor", JOptionPane.PLAIN_MESSAGE));
            System.out.println(opcao);


            if (opcao == 1) {                   
                controlador = (Interface) Naming.lookup("//localhost/rmi");// Rmiregistry (Servidor1)
            //  JOptionPane.showMessageDialog(null, "Conectado ao servidor 1.");
                cont++;
            } else if(opcao == 2) {
                controlador = (Interface) Naming.lookup("//192.168.1.131/rmi");// Rmiregistry (Servidor2)
                //JOptionPane.showMessageDialog(null, "Conectado ao servidor 2.");
            } else if(opcao == 3) {
                System.exit(2);
            } else {
                JOptionPane.showMessageDialog(null, "Por favor, digite apenas 1 ou 2", "Opção Inválida", JOptionPane.ERROR_MESSAGE);
            }

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Por favor, entre apenas com números ( 1, 2 e 3).", "Opção Inválida", JOptionPane.ERROR_MESSAGE);
            //System.err.println("Problemas de localização! " + e);
            e.printStackTrace();
            //System.exit(2);
        } 






    }   while(opcao < 1 || opcao > 2);

// ------------ - - - - - - - - - - - - - - - - Fim da Escolha de Servidor ------------ - - - - - - - - - - - - - - - -

// ------------ - - - - - - - - - - - - - - - - Inicio do Cliente 1 ------------ - - - - - - - - - - - - - - - -

if(controlador.clientRole() == 0){


        try {
            while(true) {
            controlador.incrementarCliente();
            String comp = JOptionPane.showInputDialog(null, "Digite o comprimento do paralelepípedo: ", "CLIENTE 1", JOptionPane.PLAIN_MESSAGE);
            controlador.setComprimento (Float.parseFloat(comp));
            //JOptionPane.showMessageDialog(null, "Valor do Comprimento: "+controlador.getComprimento());
            System.out.println("Aguardando parametros do segundo cliente.");
            JOptionPane.showMessageDialog(null, "Aguardando parametros do segundo cliente.", "CLIENTE (1)", JOptionPane.INFORMATION_MESSAGE);


            while(true) {                               
                if(controlador.getLargura() == -9999) { 

                } else {
            String altura = JOptionPane.showInputDialog(null, "Digite o valor da altura do paralelepípedo: ", "CLIENTE 1", JOptionPane.PLAIN_MESSAGE);
            controlador.setAltura(Float.parseFloat(altura));
            //JOptionPane.showMessageDialog(null, "Valor da altura: "+controlador.getAltura());             
            break;
                }
            }    




                while(true) {
                    if(controlador.getLargura() == -9999 ) {
                    }else {
                        JOptionPane.showMessageDialog(null,"Cliente 1 digitou o Comprimento:"+controlador.getComprimento()+" e a altura: "+controlador.getAltura()+" e o valor do volume do paralelepípedo é: "+(controlador.getComprimento() * controlador.getLargura()* controlador.getAltura()), "CLIENTE 1" , JOptionPane.INFORMATION_MESSAGE);
                    break;
                }
        }

                try {           

                    controlador.resetar();
                    break;

                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, "Digite um valor válido! ", "CLIENTE 2", JOptionPane.ERROR_MESSAGE);
                }
        /*  try {
                String cont1 = JOptionPane.showInputDialog(null, "Deseja continuar? \n Digite 1 para sim \n Digite 0 para não", "CLIENTE 1", JOptionPane.PLAIN_MESSAGE);
                controlador.setContinua1(Integer.parseInt(cont1));
            if (controlador.getContinua1() == 1){
            }else if (controlador.getContinua1() == 0){
                controlador.incrementarCliente();
                break;
            } else {
                JOptionPane.showMessageDialog(null,"Valor invalido... saindo", "CLIENTE (2)" , JOptionPane.INFORMATION_MESSAGE);
                controlador.incrementarCliente();
                break;
            }
            } catch (Exception e){
                JOptionPane.showMessageDialog(null, "Por favor, entre apenas com números (No caso: 0 ou 1).", "Opção Inválida", JOptionPane.ERROR_MESSAGE);
            }*/
        }




        } catch (RemoteException re) {
            System.err.println("Problemas com a chamada remota! " + re);
            re.printStackTrace();
            System.exit(3);
        }

// ------------ - - - - - - - - - - - - - - - - Fim do Cliente 1 ------------ - - - - - - - - - - - - - - - -

// ------------ - - - - - - - - - - - - - - - - Inicio do Cliente 2 ------------ - - - - - - - - - - - - - - - -

} else {

try {           
         while(true) {
             controlador.incrementarCliente();
             if (controlador.getComprimento() == -9999){
                    System.out.println("Aguardando parametros do primeiro cliente.");
                    JOptionPane.showMessageDialog(null, "Aguardando parametros do primeiro cliente.", "CLIENTE 2", JOptionPane.INFORMATION_MESSAGE);
             }
             while(true){
            if (controlador.getComprimento() == -9999) {

            }else{

                String largura = JOptionPane.showInputDialog(null, "Digite a largura do paralelepípedo: ", "CLIENTE 2", JOptionPane.PLAIN_MESSAGE);
                controlador.setLargura(Float.parseFloat(largura));
                //JOptionPane.showMessageDialog(null, "Valor da largura: " +controlador.getLargura());  
            break;          
        }

                }

             while(true) {                              
                    if(controlador.getAltura() == -9999) {
                    } else {
                        JOptionPane.showMessageDialog(null,"Cliente 2 digitou a largura:"+controlador.getLargura()+" e o valor do volume do paralelepípedo é: "+(controlador.getComprimento() * controlador.getLargura()* controlador.getAltura()), "CLIENTE 2" , JOptionPane.INFORMATION_MESSAGE);
                        break;
                    }
                    }
        try {           

            controlador.resetar();
            break;

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Digite um valor válido! ", "CLIENTE 2", JOptionPane.ERROR_MESSAGE);
        }
    } while(true);

} catch (RemoteException re) {
    System.err.println("Problemas com a chamada remota! " + re);
    re.printStackTrace();
    System.exit(3);

    //JOptionPane.showMessageDialog(null,"O Cliente 1 informou o valor:  " +controlador.getComprimento()+ " de comprimento e o valor " +controlador.getLargura()+ " e o  volume do paralelepipedo será: " +controlador.getAltura() * controlador.getComprimento() * controlador.getLargura(), "CLIENTE 1" , JOptionPane.INFORMATION_MESSAGE);
    //JOptionPane.showMessageDialog(null,"O Cliente 2 informou o valor:  " +controlador.getLargura()+ " de altura e o valor do volume do paralelepipedo será: " +controlador.getAltura() * controlador.getComprimento() * controlador.getLargura(), "CLIENTE 2" , JOptionPane.INFORMATION_MESSAGE);
//------------ - - - - - - - - - -  -  -  -  -  -   - Fim: Cliente (2) ------------ - - - - - - - - - -  -  -  -  -  -   -

}

}}}

2 Respostas

darlan_machado

Qual é a dúvidda?

M

Eu preciso exibir uma mensagem quando o cliente1 entrar para esperar o cliente2 conectar. Quando o cliente2 conectar, a mensagem exibida ao cliente1 fechará, é assim o sistema iniciará normalmente

Criado 15 de junho de 2018
Ultima resposta 15 de jun. de 2018
Respostas 2
Participantes 2