elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: [1]
1  Programación / Java / Re: Problema con Applet (magic number ...) en: 3 Marzo 2013, 00:04 am
Vaya crack de man... creo que he visto el problema (o por lo menos uno de ellos... el que dices ya lo comprobé antes y no pareció eso no...). Tengo que decirte que la información que facilitas tú no la encuentro en ningún otro lado, luego ya busco un poco más orientado y va todo mejor, pero muy crack. Te digo esto porque acabo de caer en un foro donde creo que dices bastante claramente algo que aún no había encontrado explicado en ningún lado (debo ser muy malo buscando por google...) pero llevava ya rato en ello... me estaba preocupando que una chorrada como esta no la encontrara... et voilá! Chuidiang responde:
http://www.forosdelweb.com/f45/carga-applets-496823/
Triples gracias man! Respect! ;)
2  Programación / Java / Problema con Applet (magic number ...) en: 2 Marzo 2013, 11:57 am
Hola!

Estoy intentando colgar un Applet de Java en un documento HTML, pero me produce un error. Lo he probado en Google Chrome y en Firefox, pero nada... He actualizado el plugin para el Chrome. Pero el error sigue siendo el mismo:

Error de la Aplicación:
ClassFormatError
Incompatible magic value 1768779887 in class file <nombre_del_fichero>

¿Qué le pasa? He hecho caso a lo que hay por ahí: el código del HTML y el código del ".class". Voy a colgarlos aquí, pero no creo que esté ahí el fallo:

Código del Applet:
Código
  1. import java.applet.Applet;
  2. import java.awt.*;
  3.  
  4. public class AppletTemplate extends Applet
  5. {
  6.  
  7. private int width;
  8. private int height;
  9.  
  10. @Override
  11. public void init()
  12. {
  13. setBackground(Color.BLUE);
  14. setForeground(Color.YELLOW);
  15. width = getWidth();
  16. height = getHeight();
  17. }
  18.  
  19. @Override
  20. public void paint(Graphics g)
  21. {
  22. g.drawLine(0,0,width, height);
  23. }
  24. }
  25.  

Código del HTML:
Código
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <tittle>Plantilla para cargar Applets</tittle>
  3. </head>
  4. <h1>Aqui el Applet:</h1>
  5. <p>
  6.  
  7. <applet code="AppletTemplate.class" width="200" height="200">
  8. <b>Error! Debes usar un navegador apto para Java</b>
  9.  
  10. </body>
  11. </html>
  12.  

No entiendo qué esta fallando... ¿Alguien me podría ayudar? Gracias de todos modos
3  Programación / Java / Re: Actualizar componentes? Repintar componenteS?? en: 27 Febrero 2013, 10:54 am
Ohhh Chuidiang!! Gran honor para mi!! Tus tutoriales me han sacado de embrollos importantes + de una!!! Es lo que dices seguro, porque si eso es así es normal que no se me esté repintando. Definitivamente, lo acabo de probar y YEAHHHH funciona debidamente! Gracias por la explicación, ahora entiendo qué estaba pasando.

Un saludo cordial, te dejo ahí una vibra en modo "gracias"!!
http://www.youtube.com/watch?v=JkaJP1m_s4Y
4  Programación / Java / Actualizar componentes? Repintar componenteS?? en: 27 Febrero 2013, 02:10 am
Hola!

Estoy INTENTANDO hacer un chat. El problema lo tengo para actualizar los mensajes enviados y el texto que debe aparecer en el JTextArea. Entonces, tengo lo siguiente, esencialmente:

Código
  1. Fichero 1: clase InterfazDelChat
  2. public class InterfazDelChat extends JFrame implement ActionListener
  3. {
  4. public static JTextArea areaChat = new JTextArea("Titulo del JTextArea del chat\n\n", 50, 50);
  5. public static JButton conec = new JButton("Conectar");
  6. public InterfazDelChat()
  7. {
  8. super("Titulillo");
  9. getContentPane().add(areaChat);
  10. getContentPane().add(conec);
  11. areaChat.addActionListener(this);
  12. }
  13. @Override
  14. public void actionPerformed(ActionEvent ev)
  15. {
  16. new ServidorDelChat;
  17. }
  18. public static void main(String[]args)
  19. {
  20. new InterfazDelChat();
  21. }
  22. }
  23.  

Fichero 2: clase ServidorDelChat
Código
  1. public static class ServidorDelChat
  2. {
  3. public ServidorDelChat()
  4. {
  5. //Codigo del socket hasta el punto de DataInputStream tenerlo en el String mensajeRecibido)
  6. while (desconectado != true)
  7. {
  8. //Lo que yo creia que tenia que poner:
  9. InterfazDelChat.areaChat.append("\nCliente dice:\n" + mensajeRecibido + "\n");
  10. }
  11. /*Lo que ocurre, cuando pongo esto, es que el texto no llega a la interfaz, al JTextArea
  12.  del programa, hasta que no ha completado el bucle
  13. (cuando pongo un numero de opciones finito,
  14. no como el que esta puesto aqui,
  15. si pongo 3, envia 3 mensajes diferentes...),
  16. porque si quiero que esto se pueda repetir, ¿tendre que meterlo en un bucle, no?
  17. El caso es que me lo imprime, y me lo imprime bien, pero tarde.
  18. No me lo imprime en la pantalla, en el caso de poner 3 como fin del bucle,
  19. hasta que no ha superado el bucle, no carga el texto
  20. (no carga el texto de linea en linea, carga solo al final del bucle todos los mensajes acumulados...*/
  21. }
  22. }
  23.  

He imaginado que la clase InterfazDelChat no se vuelve a cargar hasta que acaba con el bucle, que termina el objeto, y así vuelve a cargar los demás objetos. Entonces... mi pregunta sería:
   - ¿Cómo puedo cargar el JTextArea de la clase InterfazDelChat desde la otra clase ServidorSocket? ¿O cómo puedo cargar de nuevo un objeto, o actualizarlo, estando este en una, y queriendo cargarlo desde otra?

He estado buscando y probando diversas cosas, pero nada surgio efecto... Gracias por todo!!
5  Programación / Java / Actualizar JTextArea desde otra clase en: 27 Febrero 2013, 02:05 am
Hola!

Estoy INTENTANDO hacer un chat. El problema lo tengo para actualizar los mensajes enviados y el texto que debe aparecer en el JTextArea. Entonces, tengo lo siguiente, esencialmente:

Código
  1. Fichero 1: clase InterfazDelChat
  2. public class InterfazDelChat extends JFrame implement ActionListener
  3. {
  4. public static JTextArea areaChat = new JTextArea("Titulo del JTextArea del chat\n\n", 50, 50);
  5. public static JButton conec = new JButton("Conectar");
  6. public InterfazDelChat()
  7. {
  8. super("Titulillo");
  9. getContentPane().add(areaChat);
  10. getContentPane().add(conec);
  11. areaChat.addActionListener(this);
  12. }
  13. @Override
  14. public void actionPerformed(ActionEvent ev)
  15. {
  16. new ServidorDelChat;
  17. }
  18. public static void main(String[]args)
  19. {
  20. new InterfazDelChat();
  21. }
  22. }
  23.  

Fichero 2: clase ServidorDelChat
Código
  1. public static class ServidorDelChat
  2. {
  3. public ServidorDelChat()
  4. {
  5. //Codigo del socket hasta el punto de DataInputStream tenerlo en el String mensajeRecibido)
  6. while (desconectado != true)
  7. {
  8. //Lo que yo creia que tenia que poner:
  9. InterfazDelChat.areaChat.append("\nCliente dice:\n" + mensajeRecibido + "\n");
  10. }
  11. /*Lo que ocurre, cuando pongo esto, es que el texto no llega a la interfaz, al JTextArea
  12.  del programa, hasta que no ha completado el bucle
  13. (cuando pongo un numero de opciones finito,
  14. no como el que esta puesto aqui,
  15. si pongo 3, envia 3 mensajes diferentes...),
  16. porque si quiero que esto se pueda repetir, ¿tendre que meterlo en un bucle, no?
  17. El caso es que me lo imprime, y me lo imprime bien, pero tarde.
  18. No me lo imprime en la pantalla, en el caso de poner 3 como fin del bucle,
  19. hasta que no ha superado el bucle, no carga el texto
  20. (no carga el texto de linea en linea, carga solo al final del bucle todos los mensajes acumulados...*/
  21. }
  22. }
  23.  

He imaginado que la clase InterfazDelChat no se vuelve a cargar hasta que acaba con el bucle, que termina el objeto, y así vuelve a cargar los demás objetos. Entonces... mi pregunta sería:
   - ¿Cómo puedo cargar el JTextArea de la clase InterfazDelChat desde la otra clase ServidorSocket? ¿O cómo puedo cargar de nuevo un objeto, o actualizarlo, estando este en una, y queriendo cargarlo desde otra?

Gracias por todo!!!
6  Programación / Java / Re: SocketServer y compañeros en: 27 Febrero 2013, 01:31 am
Respuesta:
No hay ningún problema. Desde el momento en que acepta, un socket nuevo es creado para seguir escuchando a otros clientes, pero el primero se mantiene abierto en el puerto ServerSocket.getLocalPort(). Así que el problema debe ser otro... y ello debería ir en otro post. En concreto, es un problema de actualizar el JTextArea donde debería aparecer el mensaje nada más entrar la info del DataInputStream. Pero lo comento en otro post.

Gracias y disculpen!!
7  Programación / Java / Re: SocketServer y compañeros en: 24 Febrero 2013, 22:04 pm
Reformularé la pregunta, porque creo que es leer código innecesariamente:

¿Cómo puedo hacer para abrir una conexión entre un socket servidor y otro cliente y dejarla abierta para que se puedan enviar mensajes entre sí?

Gracias, y perdón por no haber sido más conciso.
8  Programación / Java / Re: SocketServer y compañeros en: 24 Febrero 2013, 18:10 pm
Breve explicación para entender mejor el código:
1. Todos los "System.out.println(*);" en realidad sobran, lo que pasa que los utilizo para ir siguiendo el programa, por donde va pasando, e ir quedándome con ciertos valores para ir entendiéndolo mejor.
2. La idea general es crear 4 clases diferentes:
 - ConectarDesdeServidor: para conectar con el cliente.
 - HablarDesdeServidor: para hablar con el cliente.
 - EscucharDesdeServidor: para escuchar al cliente.
 - DesconectarDesdeServidor: para desconectar las conexiones, o por lo menos la del cliente.
3. Esto lo hago para poder usar con más libertad los Threads. Por eso cada una de estas clases cumple una función y todas derivan de la clase Thread de Java, para poder usarlas como hilos.
4. No sé bien bien cómo podría hacerlo para que haya una escucha y una posibilidad de hablar al mismo tiempo (eso sí, con "synchronized), pero de una manera CONTINUADA, y no sólo espontánea (ahora consigo que se envíe y se reciba un mensaje, pero nada más...)
9  Programación / Java / SocketServer y compañeros en: 24 Febrero 2013, 17:57 pm
¡Hola buenas!
Agradecería un montón (y parte del otro) si me pudieran tender una mano con un problemilla de sockets. Estoy ideando un chat, pero ocurre que lo consigo abrir, consigue recibir UN mensaje, pero no controlo suficiente con los threads (si es que es ahí donde está la clave) como para mantener la comunicación abierta entre cliente y servidor y poder prolongar la conversación. Antaño me funcionó, pero ahora que lo estoy haciendo más "limpio", no recuerdo cómo...

El código que tengo es el siguiente:
Código
  1. import java.lang.*;
  2. import java.io.*;
  3. import java.net.*;
  4.  
  5. public class ServidorDelChat extends Thread
  6. {
  7. public static ServerSocket socketServidor;
  8. public static Socket socketConexion;
  9. public static DataOutputStream salidaServidor;
  10. public static BufferedReader entradaServidor;
  11. public static int puerto;
  12.  
  13. //Clase para hablar
  14.    public class HablarDesdeServidor extends Thread
  15.        {
  16.        //CONSTRUCTOR DE HILO para hablar
  17.        public void run()
  18.        {
  19.            try{
  20.                salidaServidor = new DataOutputStream(socketConexion.getOutputStream());
  21.                System.out.println("salidaServidor = new DataOutputStream(socket.getOutputStream());");
  22.                salidaServidor.writeUTF(InterfazDelChat.fieldMensaje.getText());
  23.            }catch(Exception exc) {
  24.                InterfazDelChat.areaChat.append("\nError al ENVIAR el mensaje.\n");}
  25.            }
  26.        }
  27.  
  28.    //Clase para escuchar
  29.    public class EscucharDesdeServidor extends Thread
  30.        {
  31.        //CONSTRUCTOR DE HILO para escuchar
  32.        public void run()
  33.            {
  34.            System.out.println("\nLa clase Thread.EscucharDesdeServidor SÍ FUNCIONA.");
  35.            System.out.println("Valor de ServerSocket socketServidor: " + socketServidor);
  36.                try{
  37.                    entradaServidor = new BufferedReader(new InputStreamReader(socketConexion.getInputStream())); //Coge el InputStream, lo pone en un lector y el resultado en un búffer.
  38.                    InterfazDelChat.areaChat.append("\nLa otra persona dice...\n" + entradaServidor.readLine() + "\n");
  39.                }catch(Exception exc){
  40.                    InterfazDelChat.areaChat.append("\nError al RECIBIR el mensaje.\n");}
  41.  
  42.            }
  43.        }
  44.  
  45.    //Clase para conectar
  46.    public class ConectarDesdeServidor extends Thread
  47.        {
  48.        //CONSTRUCTOR DE HILO para conectar
  49.        public void run()
  50.            {
  51.            System.out.println("La clase Thread.ConectarDesdeServidor SÍ FUNCIONA.");
  52.            try{
  53.                puerto = Integer.parseInt(InterfazDelChat.fieldPuerto.getText());
  54.                socketServidor = new ServerSocket(puerto, 2);
  55.  
  56.                socketConexion = new Socket();
  57.                System.out.println("Parámetro de ServerSocket(puerto): " + puerto);
  58.                System.out.println("Valor de ServerSocket socketServidor: " + socketServidor);
  59.                System.out.println("Valor de Socket socket: " + socketConexion);
  60.  
  61.                socketConexion = socketServidor.accept(); //Aquí espera a que alguien haga la petición. La petición se inicia en el envío del primer mensaje.
  62.  
  63.                InterfazDelChat.fieldDireccionLocal.setText("" + socketConexion.getLocalSocketAddress());
  64.                InterfazDelChat.fieldDireccionRemota.setText("" + socketConexion.getRemoteSocketAddress());
  65.  
  66.                System.out.println("Dirección socket local: " + socketConexion.getLocalSocketAddress());
  67.                System.out.println("Dirección socket remoto: " + socketConexion.getRemoteSocketAddress());
  68.                System.out.println("Valor de (socket = socketServidor.accept()): " + socketConexion);
  69.  
  70.  
  71.  
  72.                System.out.println("Ahora, se supone, estamos enlazados.");
  73.                InterfazDelChat.fieldAyuda.setText("Conectado.");
  74.            }catch(Exception exc) {
  75.                }
  76.            }
  77.        }
  78.  
  79.    //Clase para desconectar
  80.    public class DesconectarDesdeServidor extends Thread
  81.        {
  82.        //CONSTRUCTOR DE HILO para desconectar
  83.        public void run()
  84.            {
  85.            try{
  86.                socketConexion.close();
  87.                entradaServidor.close();
  88.                salidaServidor.close();
  89.            }catch(Exception exc) {
  90.                }
  91.            }
  92.        }
  93. //CONSTRUCTOR
  94. public ServidorDelChat()
  95.    {
  96.    System.out.println("El método constructor de ServidorDelChat() SÍ funciona.");
  97.        (new ConectarDesdeServidor()).run();
  98.        (new EscucharDesdeServidor()).run();    
  99.    }
  100.  
  101. }
  102.  
  103.  

He probado introduciendo bucles en la clase para conectar y en la clase para hablar, pero no hay manera... no se me ocurre nada. Cualquier consejo será de gran ayuda.
¡Gracias, sois muy cracks! ;)
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines