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 - NathanD

#11
Vaya, qué extraño... Probaré lo de la configuración de redes de Windows, a ver. He estado alternando con Windows y Ubuntu por si el problema era de alguno de éstos, pero miraré lo que me has dicho.

Muchas gracias por tu ayuda!!
#12
La excepción me salta en el Cliente.

Ya consigo hacer el Telnet desde un ordenador distinto, que es un paso :D La cosa es por qué no funciona desde el propio programa del servidor, ¿cuál es el problema?

Muchísimas gracias por tu atención.
#13
Cita de: egyware en 18 Noviembre 2013, 11:51 AM
Bastante extraño, y exactamente en donde te lanza esa excepción?

Te recomiendo, que te uses Telnet (si usas Windows no viene instalado por defecto debes agregarlo o si usas linux ya viene integrado).
Primero abres el servidor y luego con Telnet, en una maquina ajena donde está el servidor, intentas conectarte. Si esto no funciona es probable  que Java esté siendo bloqueado por algún firewall y que esté causándote problemas.

Bueno has esa prueba y nos cuentas!

Gracias por responder. No pone la línea en la que se lanza la excepción.

Usando Telnet estoy igual, sólo no establece la conexión ni en la maquina ajena del servidor ni en la propia. Me dice lo siguiente:
Microsoft Telnet> open 5000
Conectándose a 5000...No se puede abrir la conexión al host, en puerto 23: Error
en la conexión


He desactivado tanto el firewall como el antivirus. Ni idea de qué puede tratarse...

Gracias y un saludo.
#14
Estoy creando una aplicación cliente-servidor lo más sencilla posible (para luego implementar más cosas), pero estoy teniendo problemas para ejecutarlo en la LAN de mi casa (ya entonces de WAN ni de hablamos, el cual es mi propósito...). Sólo funciona cuando tanto el servidor como el cliente son el mismo localhost, si no, me salta la siguiente excepción:
java.net.ConnectException: Connection refused: connect

Os dejo los fuentes. Cliente:
Código (java) [Seleccionar]

import java.io.DataInputStream;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;


public class Cliente {
//Constantes
final int PUERTO = 7000;
//final String HOST = "192.168.1.36";

/************/

//Métodos - constructor
public Cliente(){

try{
InetAddress address = InetAddress.getLocalHost();
Socket skCliente;

skCliente = new Socket(address, PUERTO);
InputStream aux = skCliente.getInputStream();
DataInputStream flujo = new DataInputStream(aux);
System.out.println(flujo.readUTF());
skCliente.close();

} catch(UnknownHostException e){
System.out.println( e );
    System.out.println("Error en la conexión." );
   
} catch (Exception e) {
System.out.println(e);

}
}

//Cuerpo del programa
public static void main(String[] args){
new Cliente();


}

}


Servidor:
Código (java) [Seleccionar]

import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;


public class Servidor {
//Constantes
final int MAX_CLIENTES = 5;
final int PUERTO = 7000;
/************/

//Métodos - constructor
public Servidor(){
ServerSocket skServidor;
try {
skServidor = new ServerSocket(PUERTO);
System.out.println("Escucho el puerto: "+PUERTO);
for(int numCli = 0; numCli < MAX_CLIENTES; numCli++){
Socket skCliente = skServidor.accept();
System.out.println("\tSirvo al cliente: "+skCliente.getRemoteSocketAddress());
OutputStream aux = skCliente.getOutputStream();
DataOutputStream flujo = new DataOutputStream(aux);
flujo.writeUTF("\nHola cliente "+ skCliente.getRemoteSocketAddress());
skCliente.close();
}

} catch(UnknownHostException e){
System.out.println( e );
    System.out.println("Error en la conexión." );
   
}
    catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e);
}
}

public static void main(String[] args){
new Servidor();
}
}


Gracias de antemano y saludos.
#15
Vale, ya está, tenía que colocar la imagen en la carpeta bin con los .class, aunque hasta ahora la he puesto en la carpeta del proyecto...

Muchísimas gracias otra vez.
#16
Copio y pego el código y me sale el siguiente error de compilación:

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1348)
at ImageJPanel$PanelOverDraw.<init>(ImageJPanel.java:40)
at ImageJPanel.<init>(ImageJPanel.java:25)
at ImageJPanel.main(ImageJPanel.java:19)


La línea del error es la 24.

Código (java) [Seleccionar]
this.add(new PanelOverDraw());

¿A qué se puede deber? Gracias por tu paciencia y un saludo.
#17
Cita de: M1t$u en 13 Noviembre 2013, 05:43 AM
Hago uso de BufferedImage y de ImageIO para almacenar la imagen en un buffer y leer la imagen original respectivamente.



Código (=java) [Seleccionar]

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class ImageJPanel extends JFrame {


public static void main(String... args) {
new ImageJPanel();
}

public ImageJPanel() {
super("Dibujo sobre imagen");

this.add(new PanelOverDraw());
this.setSize(484,519);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
}

public class PanelOverDraw extends JPanel {


private BufferedImage img = null;

public PanelOverDraw() {

File imageFile = new File("background.jpg"); // guarda la imagen en un archivo
try {
img = ImageIO.read(getClass().getResourceAsStream(imageFile.toString())); // la carga en una BufferedReader
} catch (IOException e) {
e.printStackTrace();
}

this.setPreferredSize(new Dimension(484,409));

// creamos una instancia graphics desde la imagen para pintar sobre ella
Graphics2D pint = img.createGraphics();
        pint.setColor(Color.GREEN);
        pint.fillRect(200,200,100,100);
        pint.dispose();

}

@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(img,0,0,null); // dibuja la imagen al iniciar la aplicacion
}

}
}


Muchísimas gracias, no sabes cuánto me has ayudado. Gracias.
#18
Éste es uno de tantos intentos. No está muy limpio; lo he hecho con algo de prisa. Lo dicho arriba, no sé como poner un panel de fondo y luego ver los Graphics encima de éste.

El código:
Código (java) [Seleccionar]
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Demo1 extends JComponent {


   private final static int ANCHO = 512;

   private final static int ALTO = 384;

   private final static int DIAMETRO = 20;

   private float x, y;

   private float vx, vy;

   public Demo1() {
       setPreferredSize(new Dimension(ANCHO, ALTO));
       x = 10;
       y = 20;
       vx = 300;
       vy = 400;
   }

   private void fisica(float dt) {
       x += vx * dt;
       y += vy * dt;
       if (vx < 0 && x <= 0 || vx > 0 && x + DIAMETRO >= ANCHO)
           vx = -vx;
       if (vy < 0 && y < 0 || vy > 0 && y + DIAMETRO >= ALTO)
           vy = -vy;
   }

   public void paint(Graphics g) {
   
       g.setColor(Color.WHITE);
       g.fillRect(0, 0, ANCHO, ALTO);
       g.setColor(Color.RED);
       g.fillOval(Math.round(x), Math.round(y), DIAMETRO, DIAMETRO);
   }

   private void dibuja() throws Exception {
    this.repaint();
   }

   public void cicloPrincipalJuego() throws Exception {
       float dt = 0.01f;
       while (true) {
        Thread.sleep(10);
        fisica(dt);
           dibuja();
       }
   }

   public static void main(String[] args) throws Exception {
    JFrame jf = new JFrame("Demo1");
       jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       jf.setResizable(false);
       
       Demo1 demo1 = new Demo1();
       jf.setContentPane(crearPanel());
       jf.pack();
       jf.setVisible(true);
       demo1.cicloPrincipalJuego();
   }

private static Container crearPanel() {
JPanel panel = new JPanel();
JLabel label = new JLabel();

label.setIcon(new ImageIcon("img.jpg"));
panel.add(label);

return panel;
}
}


Muchas gracias por vuestra paciencia y saludos.
#19
Buenas, estoy con algo que me lleva trayendo de cabeza desde hace bastante. Mi pregunta es ésa, ¿cómo puedo poner una imagen de fondo, y luego superponer figuras con Graphics? Lo he intentado de mil maneras, a veces no me hace caso, y otras da error en tiempo de ejecución, y no sabría ni qué código poner aquí. He conseguido poner otros componentes como JLabels o JButtons, pero con Graphics no puedo.

Gracias de antemano y saludos.
#20
Hola buenas, os expongo mi problema.

Estoy haciendo un clon del Arkanoid y me gustaría añadirle un sistema de puntuaciones, para hacerlo más atractivo y rejugable. Mi idea es la siguiente: cada partida tendrá asociada un nombre (el que usuario escoja), y éste se guardará, junto con los puntos conseguidos, en un fichero que se guardará en un "servidor". Cuando en el menú del juego se seleccionara la opción de mostrar las puntuaciones, pues se mostraría la información almacenada en el fichero.

Y claro, se supone cualquier ordenador desde el cual se estuviera ejecutando el juego puede ver las puntuaciones del fichero. Antes que nada aclarar que mis conocimientos sobre sockets (en cualquier lenguaje de programación) son nulos. Dicho ésto, mi pregunta es, ¿puede ser viable? No os estoy pidiendo cuál sería el código ni nada por el estilo, evidentemente, sino cuáles serían las directrices a seguir para mi propósito.

Creo que no me dejo nada en el tintero. Muchas gracias de antemano (sobretodo por vuestra paciencia).