Duvida messenger java

1 resposta
F

Oi pessoal estou fazendo um messenger.
Gostaria de uma ajuda do pessoal experiente aqui para ver o que vai faltando e eu vou implementando o que falta.
Já rascunhei algumas coisas o esquema que preciso fazer é um servidor que deve ter os usuários cadastrados e quando um cliente se conectar a esse servidor trazer a lista de amigos com status on e off line.
Bom vamos lá.

public class ServerTeste {

    ArrayList clienteOutPutStream;

    public class Manipulador implements Runnable{
    BufferedReader reader;
    Socket socket;

    public Manipulador(Socket clienteSocket){
        try {
        socket = clienteSocket;
        InputStreamReader isReader = new InputStreamReader(socket.getInputStream());
        reader = new BufferedReader(isReader);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
        public void run(){
            String menssagem;
            try {
                while ((menssagem = reader.readLine()) != null) {
                    //System.out.println("escrevendo" + menssagem);
                    mensagemTodos(menssagem);
                }
            } catch (Exception e) {
                e.printStackTrace();
                }
            }
          }
       public static void main (String[] args){
        new ServerTeste().mandar();
    }
    public void mandar(){
        clienteOutPutStream = new ArrayList();
        try {
            ServerSocket serverSocket = new ServerSocket(5000);
            while (true) {
                Socket clienteSocket = serverSocket.accept();
                PrintWriter writer = new PrintWriter(clienteSocket.getOutputStream());
                clienteOutPutStream.add(writer);
                Thread thread = new Thread(new Manipulador(clienteSocket));
                thread.start();
                System.out.println("conectado!!!!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void mensagemTodos(String menssagem){
        Iterator it = clienteOutPutStream.iterator();
        while (it.hasNext()) {
            try {
                PrintWriter writer = (PrintWriter) it.next();
                writer.println(menssagem);
                writer.flush();
            } catch (Exception e) {
                e.printStackTrace();
                }
            }
        }
    }

public class ClienteTeste {

    JTextField texSaida;
    JTextArea texEntrada;
    PrintWriter writer;
    BufferedReader reader;
    Socket socket;

    public static void main(String[] args){
        ClienteTeste testa = new ClienteTeste();
        testa.mandar();
    }

    public void mandar(){
        JFrame  frame = new JFrame("Mensagens");
        JPanel mainPanel = new JPanel();
        texEntrada = new JTextArea(15,50);
        texEntrada.setLineWrap(true);
        texEntrada.setWrapStyleWord(true);
        texEntrada.setEditable(false);
        JScrollPane scroller = new JScrollPane(texEntrada);
        texSaida = new JTextField(20);
        JButton buttonEnviar = new JButton("Enviar");
        buttonEnviar.addActionListener(new ButtonEnviarListener());
        mainPanel.add(scroller);
        mainPanel.add(texSaida);
        mainPanel.add(buttonEnviar);
        setSobeRede();

        Thread readerThread = new Thread(new LeitorEntrada());

        frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
        frame.setSize(400,500);
        frame.setVisible(true);




    }

    private void setSobeRede(){
        try {
            socket = new Socket("127.0.0.1",5000);
            InputStreamReader streamReader = new InputStreamReader(socket.getInputStream());
            reader = new BufferedReader(streamReader);
            writer = new PrintWriter(socket.getOutputStream());
            System.out.println("conexao estabelecida!!!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public class ButtonEnviarListener implements ActionListener{
        public void actionPerformed(ActionEvent event){
            try {
                writer.println(texSaida.getText());
                writer.flush();
            } catch (Exception e) {
                e.printStackTrace();
            }
            texSaida.setText("");
            texSaida.requestFocus();
        }
    }
    public class LeitorEntrada implements Runnable{
        public void run(){
            String menssagem;
            try {
                while((menssagem = reader.readLine()) != null){
                    //System.out.println("escrevendo" + menssagem);
                    texEntrada.append(menssagem + "\n");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

Minhas dúvidas são como posso fazer para aparecer os contatos online e offline e também como posso fazer para enviar a mensagem para o contato e nao para todos?
Obrigado!!

1 Resposta

F

É um código bem simples mas não estou conseguindo sair dai.

Criado 26 de novembro de 2010
Ultima resposta 27 de nov. de 2010
Respostas 1
Participantes 1