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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Temas
Páginas: [1]
1  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
2  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!!
3  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!!!
4  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