Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   JAVA (https://www.clubdelphi.com/foros/forumdisplay.php?f=16)
-   -   Sockets, mi aplicación se queda colgada (https://www.clubdelphi.com/foros/showthread.php?t=52910)

oracle 04-02-2008 15:23:38

Sockets, mi aplicación se queda colgada
 
Hola amigos, estoy utilizando Sockets para intercambiar mensajes y datos entre dos aplicaciones, el asunto es que cuando ejecuto el cliente la aplicacion se me cuelga. Del lado del servidor no hay problemas, cuando se establece la conexion el servidor la reconoce, pero nada mas, el codigo es mas o menos el siguiente:

Código:

final JMenuItem buscarMenu = new JMenuItem();
        buscarMenu.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                cliente.ejecutarCliente();  // de aqui no pasa
                cliente.enviarDatos("Hola Servidor");
            }
        });



//la clase cliente tiene la siguiente estructura

  public Cliente( String host )
  {
      servidor = host;
  }

  public void ejecutarCliente()
  {
      try {
          conectarAServidor();
          obtenerFlujos(); 
          procesarConexion();
      }

      catch ( EOFException excepcionEOF ) {
        //Mostrar mensaje que se termino la conexion
      }

      catch ( IOException excepcionES ) {
        excepcionES.printStackTrace();
      }

      finally {
        cerrarConexion();
      }

  }

  private void conectarAServidor() throws IOException
  {     

      cliente = new Socket( InetAddress.getByName( servidor ), 12345 );

  }

  private void obtenerFlujos() throws IOException
  {
      salida = new ObjectOutputStream( cliente.getOutputStream() );     
      salida.flush();

      entrada = new ObjectInputStream( cliente.getInputStream() );

  }
 
  public void enviarDatos( String mensaje )
  {
      try {
        salida.writeObject(mensaje);
        salida.flush();
      }

      catch ( IOException excepcionES ) {
      }
  }

  private void procesarConexion() throws IOException
  {

      do {

        try {
            mensaje = ( String ) entrada.readObject();
            //aun no tengo definido que voy a hacer con los mensajes
        }

        catch ( ClassNotFoundException excepcionClaseNoEncontrada ) {

        }

      } while ( !mensaje.equals( "END" ) );

  }

  private void cerrarConexion()
  {

      try {
        salida.close();
        entrada.close();
        cliente.close();
      }
      catch( IOException excepcionES ) {
        excepcionES.printStackTrace();
      }
  }

public String getServidor() {
    return servidor;
}

public void setServidor(String servidor) {
    this.servidor = servidor;
}


oracle 05-02-2008 02:01:39

Mis saludos nuevamente, revisando una vez mas el codigo, debugeando con calma encontre par de ciclos indefinidos que provocaban el cuelgue de la app, uno de ellos estaba en la linea que dejo mas abajo, que no pintaba nada ahi....

Código:


while ( !mensaje.equals( "END" ) );

Mis saludos a todos....

//oracle


La franja horaria es GMT +2. Ahora son las 17:08:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi