Hash - msnJAVA

Started by Anonymous, 21 de March , 2007, 04:59:51 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Anonymous

E galera, esse semestre na facul tenho que desenvolver uma espécie de msn em java. Já "desenvolvi" (ajuda de um amigo) a conexão cliente-servidor e acho que to no caminho, gostaria da opinião síncera de vocês sobre o programa, pois caso haja algo que possa ser melhorado eu possa repará-lo e quem sabe construir um "msn ".   

SERVIDOR>>>

package p1;

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ServidorSocket extends JFrame
{
   private JTextField edMsg;
   private JTextArea areaMsg;
   private ObjectOutputStream output;
   private ObjectInputStream input;
   private ServerSocket servidor;
   private Socket sk;
   private int conta = 1;

      public ServidorSocket()
      {
         super( "Servidor" );
         Container container = getContentPane();

         edMsg = new JTextField();
         edMsg.setEnabled( false );

         edMsg.addActionListener
         (
            new ActionListener()
            {
               public void actionPerformed( ActionEvent event )
               {
                  enviaDados( event.getActionCommand() );
               }
            } 
         );
         container.add( edMsg, BorderLayout.NORTH );

         areaMsg = new JTextArea();
         container.add( new JScrollPane( areaMsg ),
            BorderLayout.CENTER );

         setSize( 300, 150 );
         setVisible( true );
      }
//***************************************************
      public void executaServidor()
      {
         try
         {
            servidor = new ServerSocket(2020);
            while ( true )
            {
                aguardaConexao();
                getStreams();
                processaConexao();
              
                ++conta;
            }
         }
            catch ( EOFException eofException )
            {
               System.out.println( "Cliente terminou" );
            }

           catch ( IOException ioException )
           {
               System.out.println("termino anormal cliente");
              ioException.printStackTrace();
           }
      }     
//***************************************************
           private void aguardaConexao() throws IOException
           {
              areaMsg.setText( "Esperando por conexao\n" );

              sk = servidor.accept();

              areaMsg.append( "conexao " + conta + " recebida " + sk.getInetAddress().getHostName());
           }
//***************************************************          
           private void getStreams() throws IOException
          {
             output = new ObjectOutputStream(sk.getOutputStream());

             output.flush();

             input = new ObjectInputStream(sk.getInputStream());

             areaMsg.append( "\nRecebeu streams\n" );
          }   
//***************************************************
           private void processaConexao() throws IOException
           {
              String message = "servidor>>> sucesso";
              output.writeObject( message );
              output.flush();

              edMsg.setEnabled( true );

              do
              {
                 try
                 {
                    message = ( String ) input.readObject();
                    areaMsg.append( "\n" + message );
                    areaMsg.setCaretPosition(areaMsg.getText().length() );
                 }

                 catch ( ClassNotFoundException cnfe )
                 {
                    areaMsg.append( "\nObjeto recebido desconhecido" );
                 }

              } while ( !message.equals( "CLIENTE>>> TERMINOU" ) );
           }
          
//***************************************************
           private void enviaDados(String message)
           {
              try
              {
                 output.writeObject( "servidor>>> " + message );
                 output.flush();
                 areaMsg.append( "\nSERVIDOR>>>" + message );
              }
              catch ( IOException e )
              {
                 areaMsg.append( "\n Erro EnviaDados" );
              }
           }
          
//***************************************************
           public static void main(String args[])
           {
              ServidorSocket ap = new ServidorSocket();

              ap.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );

              ap.executaServidor();
           }
      
}


CLIENTE>>>

package p1;

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Cliente2 extends  JFrame
{
   private JTextField campoTexto;
   private JTextArea areaMsg;
   private ObjectOutputStream saida;
   private ObjectInputStream input;
   private String message = "";
   private Socket sk;
   
   public Cliente2()
   {
      super("Cliente");
      
      Container container = getContentPane();
      
      campoTexto = new JTextField();
      campoTexto.setEnabled(false);
      
      campoTexto.addActionListener
      (
         new ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               enviaDados(event.getActionCommand());
            }
         }   
      );
      
      container.add(campoTexto, BorderLayout.NORTH);
      
      areaMsg = new JTextArea();
      container.add(new JScrollPane(areaMsg), BorderLayout.CENTER);
      
      setSize(300,150);
      setVisible(true);
   }
   
   public void executaCliente()
   {
      try
      {
         conectaAoServidor();
         getStreams();
         processaConexao();
         fechaConexao();
      }
      catch (EOFException eof)
      {
         System.out.println("Servidor terminou a conexão");
      }
      catch (IOException ioe)
      {
         System.out.println("Termino anormal da conexão");
         System.exit(0);
      }
   }
   
   private void getStreams() throws IOException
   {
      saida = new ObjectOutputStream(   sk.getOutputStream());
      saida.flush();
      input = new ObjectInputStream(   sk.getInputStream());
      areaMsg.append("\nObteve canais de I/O\n");
   }
   
   private void conectaAoServidor()throws IOException
   {
      areaMsg.append("Efetuando conexão\n\r");
      sk = new Socket("192.1.13.31", 2020);
      areaMsg.append("Conectando\n\rn");
   }
   
   private void processaConexao()throws IOException
   {
      campoTexto.setEnabled(true);
      do
      {
         try
         {
            message = (String) input.readObject();
            areaMsg.append("\n" + message);
            areaMsg.setCaretPosition(areaMsg.getText().length());
         }
         catch(ClassNotFoundException cnfe)
         {
            areaMsg.append("\nUnknow object type received");
         }
      }
      while(!message.equals("SERVER>>> TERMINOU"));
   }
   
   private void fechaConexao()throws IOException
   {
      areaMsg.append("\nFechando Conexao");
      saida.close();
      input.close();
      sk.close();
   }
   
   private void enviaDados(String message)
   {
      try
      {
         saida.writeObject("CLIENTE>>>" + message);
         saida.flush();
         areaMsg.append("\nCLIENTE>>>" + message);
      }
      catch(IOException ioException)
      {
         areaMsg.append("\nErro enviando dados");
      }
   }
   
   public static void main(String[] args)
   {
      Cliente2 apc = new Cliente2();
      apc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      apc.executaCliente();
   }

}