Problema em como pegar uma mensagens com botão (Socket)

0 respostas
M

Pessoal, a negócio tá brabo…

Dêem uma olhada…

Tenho uma aplicação que está utilizando Sockets de Cliente e Servidor, só que na mesma janela, abaixo tem uma foto pra ilustrar o que digo…

nesses campos onde tem porta e IP não está sendo usado no momento. O aplicativo tem de receber algo na caixa de texto e jogar no textArea acima.

Daí na aplicação, eu tenho de startar o servidor junto com o cliente, isso é feito nesse código aqui:

package msn.telas;
import Fluxo.Cliente;
import Fluxo.Servidor;

public class TelaCliente extends javax.swing.JFrame {
    
    private int porta = 0;
    private int ip = 0;
    
    private Cliente cliente;
    
    public TelaCliente() { // no construtor, starto o servidor e cliente.
        initComponents();
        this.setVisible(true);
        this.setSize(400,350);
        this.setLocation(90,20);
        
        Servidor s = new Servidor(5000,0,this.jTextArea1);
        System.out.println("Instanciando Servidor na classe TelaCliente.");
        
        System.out.println("Instanciando Cliente na classe TelaCliente.");
        cliente = new Cliente("127.0.0.1",5000);
        
        System.out.println("Executando o método 'runServidor()'");
        s.runServidor();
    }
   
    
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton1MouseClicked
        cliente.runCliente(jTextField3.getText()); //esse botão dispara o método que irá mandar a mensagem.
    }
      
    public static void main(String args[]){
        System.out.println("Criando tela do cliente.");
        new TelaCliente().setVisible(true);
        
    }
    
}

Esse é meu Cliente:

package Fluxo;

import java.io.*;
import java.net.*;
import java.util.Scanner;
import msn.telas.*;

public class Cliente {
    
    
    private String mensagem;
    private DataOutputStream saida;
    private DataInputStream entrada;
    private Socket cliente;     
    private TelaCliente telacliente;

    public Cliente(String IP, int porta) {
        try{
            cliente = new Socket(InetAddress.getByName(IP), porta);
            
            }catch (EOFException eof) {
                System.out.println("\nConexao finalizada com servidor - erro \n");
		eof.printStackTrace();
            }catch (IOException e) {
		e.printStackTrace();
	}
    }
    
    public void runCliente(String msg){
        try {     
            System.out.println("Iniciando o método 'runCliente(String msg').");
            
            saida = new DataOutputStream (cliente.getOutputStream());
            saida.flush();
            try{
                System.out.println("Enviando mensagem...");
                saida.writeUTF(msg);
                saida.flush();
                }catch (Exception cnfex) {
                   System.out.println( "\n Objeto de conexao desconhecido\n");
                }
               

                System.out.println("Fechando conexão cliente.");
                saida.close();
                cliente.close();
            
            }catch (EOFException eof) {
                System.out.println("\nConexao finalizada com servidor\n");
            }catch (IOException e) {
                e.printStackTrace();
            }
	}
}

E meu Servidor:

package Fluxo;

import java.io.*;
import java.net.*;
import java.util.Scanner;
import javax.swing.JTextArea;
import msn.telas.TelaServidor;
import msn.telas.TelaCliente;

public class Servidor {
    
    private ServerSocket servidor;
    private Socket connection;
    private int contador=1;
    private String mensagem;
    private DataOutputStream saida;
    private DataInputStream entrada;
    
    private JTextArea jt;
    
    public Servidor(int porta, int tamFila, JTextArea jt) {
        try{
            this.jt = jt;
            
            servidor = new ServerSocket(porta, tamFila);
                                  
        }catch (EOFException eof) {
            System.out.println("\n Erro de conexao com o cliente\n");
	    eof.printStackTrace();
	}catch (IOException io) {
            io.printStackTrace();
	}
    }
    
    public void runServidor(){    
        try{
            while( true ){
                
                connection = servidor.accept(); 
                entrada =  new DataInputStream(connection.getInputStream());	
                
                System.out.println("Conexão recebida.");
                
                try{
                    mensagem = jt.getText(); //aqui deveria aparecer a mensagem e posteriormente escreve-la no System.out.
                    jt.setText(mensagem);
                    System.out.println("Mensagem : " + mensagem);
                    
                    }catch (Exception cnfex) {
                        System.out.println("\n Objeto redebido desconhecido - ERRO!!");
                    }
                }
            }catch (EOFException eof){
                System.out.println("FIM DE CONEXAO COM CLIENTE ");
            }catch (IOException io) {
                io.printStackTrace();
            }
	}
}

Só que não tá fazendo certo, poderiam me ajudar…? :cry: :cry:

Criado 1 de março de 2008
Respostas 0
Participantes 1