package client; // pacotes do nucleo do Java import java.io.*; import java.net.*; // Pacotes se extens? de Java import javax.swing.*; public class Client{ /** * */ private static final long serialVersionUID = 1L; private ObjectOutputStream output; private ObjectInputStream input; private String message = ""; private String chatServer; private Socket client; public Controladora controladora; // inicializa chatServer e configura a GUI public Client( String host ) { // configura o servidor ao qual o cliente se conecta chatServer = host; runClient(); } // conecta-se ao servidor e processa as mensagens do servidor public void runClient() { // conecta ao servidor, obt? fluxos, processa a conex? try { // Etapa 1: cria um Socket para fazer a conex? connectToServer(); // Etapa 2: obt? os fluxos de entrada e de sa?a getStreams(); // Etapa 3: processa a conex? processConnection(); // Etapa 4: fecha a conex? closeConnection(); } // servidor fechou a conex� catch ( EOFException eofException ) { jaFechou(); System.out.println( "\nServidor terminou a conexao" ); } // processa problemas na comunica�o com o servidor catch ( IOException ioException ) { ioException.printStackTrace(); } } private void jaFechou() { controladora.sendToDisplayArea("\nServidor terminou a coenxao"); } // obt� fluxos para enviar e receber dados private void getStreams() throws IOException { // configura fluxo de sa�a para objetos output = new ObjectOutputStream( client.getOutputStream() ); // descarrega o buffer de sa�a para enviar informa�es e cabe�lho output.flush(); // configura o fluxo de entrada para objetos input = new ObjectInputStream( client.getInputStream() ); controladora.sendToDisplayArea( "\nRecebeu dados de E/S\n" ); } // conecta-se ao servidor private void connectToServer() throws IOException { controladora.sendToDisplayArea( "Tentando conectar-se\n" ); // cria Socket para fazer a conex? ao servidor client = new Socket( InetAddress.getByName( chatServer ), 5000 ); // exibe informa?es sobre a conex? controladora.sendToDisplayArea( "Conectado a: " + client.getInetAddress().getHostName() ); } // processa a conex? com o servidor private void processConnection() throws IOException { // processa mensagens enviadas do servidor do { // l?a mensagem e a exibe try { message = ( String ) input.readObject(); controladora.sendToDisplayArea( "\n" + message ); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); JOptionPane.showMessageDialog(null, "Aqui cagou tudo" + e); } } while ( !message.equals( "SERVER>>> TERMINATE" ) ); } // fim do m?odo processConnection // fecha fluxos e soquete private void closeConnection() throws IOException { controladora.sendToDisplayArea( "\nFechando a conex�" ); output.close(); input.close(); client.close(); } void sendData( String message ) { // envia objeto para o servidor try { controladora.sendToDisplayArea("\naqui ele deveria estar mandando"); output.writeObject( "CLIENT>>> " + message ); controladora.sendToDisplayArea("\nescreve o objeto"); output.flush(); controladora.sendToDisplayArea("\nflusha"); } // processa problemas no envio do objeto catch ( IOException ioException ) { controladora.sendToDisplayArea( "\nError writing object" ); } } } // fim da classe client