Ajuda sistema cliente servidor

4 respostas
V

Pessoal, tenho esse codigo funcionando até o momento, mas estou com uma dúvida, como eu faço para chamar um dos métodos do servidor (Aviso ou Confirmação), a partir do cliente??

Classe Servidor:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JOptionPane;

public class Servidor {

    public static void main(String[] args) {

        //Declaro o ServerSocket
        ServerSocket serv = null;
         Socket s = null;
        //Declaro o Socket de comunicação
        

        //Declaro o leitor para a entrada de dados
        BufferedReader entrada=null;

        try{

            //Cria o ServerSocket na porta 7000 se estiver disponível
            serv = new ServerSocket(40000);

            //Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
            s = serv.accept();

            //Cria um BufferedReader para o canal da stream de entrada de dados do socket s
            entrada = new BufferedReader(new InputStreamReader(s.getInputStream()));

            //Aguarda por algum dado e imprime a linha recebida quando recebe

            System.out.println(entrada.readLine());

        //trata possíveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de

//java.io
        }

catch(IOException e){

            //Imprime uma notificação na saída padrão caso haja algo errado.

            System.out.println("Algum problema ocorreu para criar ou receber o socket.");

        }finally{

            try{

                //Encerro o socket de comunicação
               s.close();

                //Encerro o ServerSocket
              serv.close();

            }catch(Exception e){
                e.printStackTrace();
            }
        }
        
    }
    public void Aviso(String msg){
    JOptionPane.showMessageDialog(null, msg);

        }
    public int Confirmacao(String msg){

        Object[] opcao = { "Sim", "Não" };

        int op = JOptionPane.showOptionDialog(null, msg , "Cuidado",
        JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null,opcao, opcao[0]);
        return op;
    }

 }

Classe Cliente:

import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import javax.swing.JOptionPane;

public class Cliente {
  
    public static void main(String[] args) {

        //Declaro o socket cliente
        Socket s = null;

        //Declaro a Stream de saida de dados
        PrintStream ps = null;

        try{

            //Cria o socket com o recurso desejado na porta especificada
            s = new Socket("127.0.0.1",40000);

            //Cria a Stream de saida de dados
            ps = new PrintStream(s.getOutputStream());

            //Imprime uma linha para a stream de saída de dados
            ps.println("agora esta conectando com sucesso");

        //Trata possíveis exceções
        }catch(IOException e){

            System.out.println("Algum problema ocorreu ao criar ou enviar dados pelo socket.");

        }finally{

            try{

                //Encerra o socket cliente
                s.close();

            }catch(Exception e){

            e.printStackTrace();
            }

        }

    }
}

4 Respostas

G

Use RMI ou EJBs e não sockets.

V

o problema é que eu não sei usar essas técnicas que vc disse, e esse é um trabalho para a faculdade urgente.

G

faça o seguinte entao:

no servidor crie seus metodos ex:(public static void fazAlgo());

quando o cliente enviar uma string fazAlgo, entao chame este metodo.

Mas ainda aconselho RMI, pois é bem simples.

V

não sei se isso seria pedir demais, mas será que tem como vc me mostrar no mesmo codigo um exemplo, pode ser com um dos dois métodos: Aviso ou Confirmação.

Criado 15 de setembro de 2009
Ultima resposta 15 de set. de 2009
Respostas 4
Participantes 2