Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Casidiablo

#281
Umm, el JBlue es muy bueno pero está construido con Java y por lo tanto no es tan rápido como el JCreator (su versión free).

Un saludo!
#282
Java / Re: Compilador en java
3 Septiembre 2007, 15:57 PM
Ligero... JCreator. Y como te dicen, una cosa es un Compilador y otra un IDE.

Un saludo!
#283
Inspirado en las bonitas palabras de Yshua, he intentado lo que dice y el resultado es el siguiente:

Clase Receptor.java: Se queda a la espera/escucha de conexiones en determinado puerto y recibe una imagen. En este caso he guardado la imagen en un archivo, pero las posibilidades son muchas:
Código (java) [Seleccionar]
import java.io.*;
import java.net.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class Receptor{
    private ObjectInputStream entrada;
    private ServerSocket servidor;
    private Socket conexion;
    public void ejecutarServidor() {
        try {
            servidor = new ServerSocket( 12345, 100 );
            while ( true ) {
                try {
                    esperarConexion();
                    entrada = new ObjectInputStream( conexion.getInputStream() );
                    System.out.println( "\nSe recibieron los flujos de entrada\n" );
                    procesarConexion();
                } catch ( EOFException excepcionEOF ) {
                    System.err.println( "El servidor terminó la conexión" );
                    excepcionEOF.printStackTrace();
                } finally {
                    cerrarConexion();   // Paso 5: cerrar la conexión.
                }
            } // fin de instrucción while
        } // fin del bloque try
        catch ( IOException excepcionES ) {
            excepcionES.printStackTrace();
        }
       
    } // fin del método ejecutarServidor
    // esperar que la conexión llegue, después mostrar información de la conexión
    private void esperarConexion() throws IOException {
        System.out.println( "Esperando una conexión\n" );
        conexion = servidor.accept(); // permitir al servidor aceptar la conexión
        System.out.println( "Conexión recibida de: " + conexion.getInetAddress().getHostName() );
    }
    // procesar la conexión con el cliente
    private void procesarConexion() throws IOException {
        do { // procesar los mensajes enviados por el cliente
           
            // leer el mensaje y mostrarlo en pantalla
            try {
                byte[] bytesImagen = (byte[]) entrada.readObject();
                ByteArrayInputStream entradaImagen = new ByteArrayInputStream(bytesImagen);
                BufferedImage bufferedImage = ImageIO.read(entradaImagen);
               
                String nombreFichero=System.getProperty("user.home")+File.separatorChar+"captura.jpg";
                System.out.println("Generando el fichero: "+nombreFichero );
                FileOutputStream out = new FileOutputStream(nombreFichero);
                // esbribe la imagen a fichero
                ImageIO.write(bufferedImage, "jpg", out);
            }
           
            // atrapar problemas que pueden ocurrir al tratar de leer del cliente
            catch ( ClassNotFoundException excepcionClaseNoEncontrada ) {
                System.out.println( "\nSe recibió un tipo de objeto desconocido" );
            }
           
        } while ( true );
       
    } // fin del método procesarConexion
    // cerrar flujos y socket
    private void cerrarConexion() {
        System.out.println( "\nFinalizando la conexión\n" );
        try {
            entrada.close();
            conexion.close();
        } catch( IOException excepcionES ) {
            excepcionES.printStackTrace();
        }
    }
    public static void main( String args[] ) {
        Receptor aplicacion = new Receptor();
        aplicacion.ejecutarServidor();
    }
}


Clase Cliente.java: Ésta clase toma una captura de la pantalla, y luego envía dicha imágen como un arreglo de bytes al servidor especificado.
Código (java) [Seleccionar]
import java.io.*;
import java.net.*;
import javax.imageio.ImageIO;
import java.io.Serializable;
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
public class Cliente{
    private ObjectOutputStream salida;
    private String servidorChat;
    private Socket cliente;
   
    public Cliente( String host ) {
        servidorChat = host; // establecer el servidor al que se va a conectar este cliente
    }
    private void ejecutarCliente() {
        try {
            conectarAServidor(); // Paso 1: crear un socket para realizar la conexión
            salida = new ObjectOutputStream( cliente.getOutputStream() );
            salida.flush(); // vacíar búfer de salida para enviar información de encabezado
            System.out.println( "\nSe recibieron los flujos de E/S\n" );
            enviarDatos();
        } catch ( EOFException excepcionEOF ) {
            System.err.println( "El cliente termino la conexión" );
        }
       
        // procesar los problemas que pueden ocurrir al comunicarse con el servidor
        catch ( IOException excepcionES ) {
            excepcionES.printStackTrace();
        }
       
        finally {
            cerrarConexion(); // Paso 4: cerrar la conexión
        }
       
    } // fin del método ejecutarCliente
   
    // conectarse al servidor
    private void conectarAServidor() throws IOException {
        System.out.println( "Intentando realizar conexión\n" );
        // crear Socket para realizar la conexión con el servidor
        cliente = new Socket( InetAddress.getByName( servidorChat ), 12345 );
        // mostrar la información de la conexión
        System.out.println( "Conectado a: " +
                cliente.getInetAddress().getHostName() );
    }
    // cerrar flujos y socket
    private void cerrarConexion() {
        System.out.println( "\nCerrando conexión" );
        try {
            salida.close();
            cliente.close();
        } catch( IOException excepcionES ) {
            excepcionES.printStackTrace();
        }
    }
    private void enviarDatos( ) {
        Rectangle rectangleTam = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
        try {
            Robot robot = new Robot();
            BufferedImage bufferedImage = robot.createScreenCapture(rectangleTam);
            ByteArrayOutputStream salidaImagen = new ByteArrayOutputStream();
            ImageIO.write(bufferedImage, "jpg", salidaImagen);
            byte[] bytesImagen = salidaImagen.toByteArray();
            salida.writeObject( bytesImagen );
            salida.flush();
            System.out.println( "Se ha enviado la imagen" );
        } catch (AWTException e) {
            e.printStackTrace();
        } // procesar los problemas que pueden ocurrir al enviar el objeto
        catch ( IOException excepcionES ) {
            System.out.println( "\nError al escribir el objeto" );
        }
    }
   
    public static void main( String args[] ) {
        Cliente aplicacion;
       
        if ( args.length == 0 )
            aplicacion = new Cliente( "127.0.0.1" );
        else
            aplicacion = new Cliente( args[ 0 ] );
       
        aplicacion.ejecutarCliente();
    }
   
} // fin de la clase Cliente


El programa funciona!!! Pero... me sale una excepción que no he sabido depurar:

java.io.EOFException
        at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
        at java.io.ObjectInputStream.readObject0(Unknown Source)
        at java.io.ObjectInputStream.readObject(Unknown Source)
        at Receptor.procesarConexion(Receptor.java:43)
        at Receptor.ejecutarServidor(Receptor.java:17)
        at Receptor.main(Receptor.java:74)


Eso sucede después de que la imágen ya ha sido creada, y el problema es que la imágen no queda bien al 100% o algo raro pasa, es decir, puedes ver la imagen con el Gimp o Paint (que comparación tan burda XD), pero con el visor de imágenes de Windows no.

Y pues no sé como solucionar el problema :-\
#284
Lo primero a tener en cuenta es que para que un objeto pueda ser usado por sockets, es necesario que dicho objeto sea Serializable, es decir que implemente dicha clase. El problema es que la clase BufferedImage no implementa la interfaz Serializable.

De momento no se me ocurre nada, voy a echarle un vistazo a ver de que va la vaina.

Un saludo!
#285
Jajaja,

Sos un maestro!!! Vaya, funciona de maravilla, de verdad no tengo como agradecerte.

Un abrazo!!!
#286
Hola a todos,

Les comento mi problema... tengo el siguiente código fuente, que me sirve para capturar el código una página web en un archivo de texto:

Código (php) [Seleccionar]
<?php
$url
=$HTTP_GET_VARS["u"];
if(
$url!=null)
{
$url=ereg_replace("aquivaunputoampersand""&"$url);
$ch curl_init();
$fp fopen ("archivo.txt""w");
curl_setopt($chCURLOPT_URL$url);
curl_setopt ($chCURLOPT_FILE$fp);
curl_setopt ($chCURLOPT_HEADER0);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
$gestor = @fopen("archivo.txt""r");
if (
$gestor) {
    while (!
feof($gestor)) {
        
$bufer .= fgets($gestor4096);
    }
    
fclose ($gestor);
}
}
?>


Se usa de la siguiente forma, por ejemplo:

http://www.pagina.com/programa.php?u=http://www.google.com.co

El programa funciona bien con páginas simples (como en el ejemplo anterior), pero en páginas que hagan una redirección no es posible obtener el código fuente , como por ejemplo en esta:

Código (php) [Seleccionar]
<?
header('Location: http://www.google.com.co');
?>


¿existe alguna manera de obtener el código fuente de la página? Obvianmente no el código fuente de esa página, sino de la página a la cual es redireccionada.

Un saludo!!!
#287
Java / Re: reproducir mp3
17 Agosto 2007, 17:07 PM
Gracias por la aclaración :)
#288
Casi todos los scripts para quitar publicidad tienen la misma pinta, pero todos son distintos... a menos que la manera de poner publicidad de dos empresas de alojamiento sean iguales, y eso es casi imposible. Cada empresa diseña su estrategia para poner publicidad, y lo hace de tal forma que sea bien difícil quitarla.

Saludos!
#289
Cita de: -Freeze- en 11 Agosto 2007, 20:51 PM
Por cierto nacex....

¿Eso que pusiste para bloquear la publicidad funciona en todos los servidores?

En los ervidores lycos.
#290
Umm, lo de los ocultos... con eso depende del explorador que uses, por ejemplo si es nautilus activas la casilla correspondientes en el menú "Ver". Por lo general los archivos linux "oculta" los archivos que comienzen con un punto (.), por ejemplo .bash_rc

Si quieres ver en la consola los archivos que "ocultos", prueba digitar el comando (sin dar enter):

ls .

Y estando así, presionas dos veces la tecla TAB.

Un saludo!