Foros del Web » Programación para mayores de 30 ;) » Java »

Arrays y servidor udp

Estas en el tema de Arrays y servidor udp en el foro de Java en Foros del Web. Hola me encuentro con el siguiente problema. Tengo un servidor grafico que tiene un textfield (donde se meterá una ip), un boton para enviar y ...
  #1 (permalink)  
Antiguo 07/04/2009, 05:57
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años, 1 mes
Puntos: 2
Arrays y servidor udp

Hola me encuentro con el siguiente problema.

Tengo un servidor grafico que tiene un textfield (donde se meterá una ip), un boton para enviar y un jlist (donde se van a meter las ips que hemos puesto en el textfield)

pues nada, quiero hacer un servidor udp que me envíe paquetes , que por cierto me los envía bien cada minuto. Pero ahora tengo un problema, para que me compruebe he decidido poner un array que me valla guardando las ips que voy comprobando (string) y otro array de short para guardar la comprobación.

Así por ejemplo en el array de ips se guarda la 192.168.0.1,192.168.0.3...etc , en sus respectivas posiciones o indices. La comprobación se hará de tal manera:
Si pasan 5 minutos sin recibir nada (osea 5 paquetes ya que los he puesto que envien cada minuto) me meterá para la direccion ip 192.168.0.1 un 1.

No se si me explico bien, mas o menos lo que quiero hacer es esto:

http://img518.imageshack.us/img518/4342/explicacion.jpg

Pero es que no se como hacer eso. He probado a hacer un array dentro del while donde se supone que envío, pero me da un error diciendo que para un elemento no estatico no se le puede asignar un elemento static

Así lo he puesto.

Código:
public class Servidor {

    public static int puertoServidor=998;
    public static int puertoCliente=999;
    public static int tamanoBuffer=4;
    public static DatagramSocket ds;
    public static byte buffer[] = new byte[tamanoBuffer];
    public    String [] arrayips;
    public short [] compruebaips;
    int i=0;
    
    
public static void main(String[] args) 
{
    
    //-----------------------SERVIDOR------------------------
    try {       
           ds = new DatagramSocket(puertoServidor);
           System.out.println("Servidor Activo");
           
               DatagramPacket p = new DatagramPacket(buffer, buffer.length);             
           
               while(true)
           
                   {          ds.receive(p);//recibe el paquete
                             System.out.println("Ha llegado una peticion \n");
                             System.out.println("Procedente de :" + p.getAddress());
                             System.out.println("En el puerto :" + p.getPort());
                             System.out.println("Sirviendo la petición");
                            
                             arrayips[i]=p.getAddress();   
                              i++;
                              aqui me imagino que iria tambien el otro array (el array de short
                 }
       
           
        }
  
        catch(SocketException e)
        {
            System.out.println("Se ha producido error en el socket");
        }
        catch (UnknownHostException e)
        {
            System.out.println("Error host desconocido");
        }
        catch(IOException e){
            System.out.println("Error en la I/O");
        }
}
}
Haber si me pueden ayudar, Gracias de antemano
  #2 (permalink)  
Antiguo 07/04/2009, 06:32
MIRL27
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Arrays y servidor udp

Tu servidor lo trabajas en tu main, que es estático, por tanto no puedes hacer referencias a atributos no estáticos sin crearte el objeto necesario (de tipo Servidor, en este caso) Digamos que un método estático es "independiente" de la clase en la que se encuentra.

También puedes declarar los atributos estáticos, de forma que puedes usarlos sin crearte un objeto de esa clase. Aquí te dejo el código que pusiste modificado de las dos formas (una de ellas comentada), y compila perfectamente de ambas formas:

Código:
public class Servidor {

    public static int puertoServidor=998;
    public static int puertoCliente=999;
    public static int tamanoBuffer=4;
    public static DatagramSocket ds;
    public static byte buffer[] = new byte[tamanoBuffer];
    public static String [] arrayips;
    public static short [] compruebaips;
    public static int i=0;
    /*	public String [] arrayips;
     *	public short [] compruebaips;
     *	public int i=0;
     */
    
    
public static void main(String[] args) 
{
    
    //-----------------------SERVIDOR------------------------
	//Servidor s = new Servidor();
    try {       
           ds = new DatagramSocket(puertoServidor);
           System.out.println("Servidor Activo");
           
               DatagramPacket p = new DatagramPacket(buffer, buffer.length);             
           
               while(true)
           
                   {          ds.receive(p);//recibe el paquete
                             System.out.println("Ha llegado una peticion \n");
                             System.out.println("Procedente de :" + p.getAddress());
                             System.out.println("En el puerto :" + p.getPort());
                             System.out.println("Sirviendo la petición");
                            
                             arrayips[i]=p.getAddress().toString();   
                             i++;
                             /*	s.arrayips[s.i]=p.getAddress().toString();   
                              *	s.i++; 
                              */
                              //aqui me imagino que iria tambien el otro array (el array de short
                 }
       
           
        }
  
        catch(SocketException e)
        {
            System.out.println("Se ha producido error en el socket");
        }
        catch (UnknownHostException e)
        {
            System.out.println("Error host desconocido");
        }
        catch(IOException e){
            System.out.println("Error en la I/O");
        }
}
}
  #3 (permalink)  
Antiguo 07/04/2009, 08:21
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: Arrays y servidor udp

vale gracias , eso si ya está solucionado

¿pero como hago ahora la comprobación esa de los arrays (lo de los ceros y los unos)?

Es que yo he puesto esto, pero no funciona me da un error
"Exception in thread "main" java.lang.NullPointerException"

He puesto esto;
Código:
ds.receive(p);//recibe el paquete
                             s.arrayips[s.i]=p.getAddress().toString();   
                             s.i++; 
                             if(true)
                             {
                               s.compruebaips[s.i]=0;
                               s.i++;
                             }  
                             
                             System.out.println("Ha llegado una peticion \n");
                             System.out.println("Procedente de :" + p.getAddress());
                             System.out.println("En el puerto :" + p.getPort());
                             System.out.println("Sirviendo la petición");
                             System.out.println("El array de ips tiene las siguientes ips:"+s.arrayips);
                             System.out.println("El array de comprobación tiene"+s.compruebaips);
¿como hago eso,? gracias

Última edición por Juny18; 10/04/2009 a las 17:29
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:46.