Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/03/2009, 08:43
Juny18
 
Fecha de Ingreso: abril-2007
Mensajes: 166
Antigüedad: 17 años, 9 meses
Puntos: 2
Respuesta: UDP Servidor-Cliente

Ya tengo mas o menos montado el servidor y el cliente.

Pero me da un problema al conectarse el cliente al socket del servidor. No entiendo por que da ese problema, (ya he dicho antes que es la primera vez que hago udp)

Aqui os paso mi codigo del servidor y del cliente

SERVIDOR

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];
    /**
     * @param args the command line arguments
     */
public static void main(String[] args) 
{
    
    //-----------------------SERVIDOR------------------------
    try {       
           ds = new DatagramSocket(puertoServidor);
           System.out.println("Servidor Activo");
           
                            
           {
               while(true)
           
                   { 
                    DatagramPacket p = new DatagramPacket(buffer, buffer.length);
                      if(ds.isConnected())
                      {
                             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");
                      }
                 }
           }
        }
  
        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");
        }
}
}


CLIENTE

Código:
public class Cliente {

    /**
     * @param args the command line arguments
     */
//    public static int puertoServidor=998;
    public static int puertoCliente=999;
    public static int tamanoBuffer=4;
    public static DatagramSocket socket;
    public static byte buffer[] = new byte[tamanoBuffer];
    //public static InetAddress IPServidor;
    public static DatagramPacket datos;
    public static void main(String[] args) throws SocketException, UnknownHostException, IOException 
    {
       try{
           
       
            
             socket = new DatagramSocket(puertoCliente); 
             socket.connect(socket.getInetAddress(), puertoCliente);
             System.out.println("cliente Activo");
             
             if(socket.isConnected())
             {
                         while (true) 
                     {

                      datos = new DatagramPacket(buffer, buffer.length, datos.getAddress() , puertoCliente);
                      System.out.println("-----ENVIANDO DATOS-------\n");
                      socket.send(datos);	
                      System.out.println("-----PAQUETE ENVIADO------\n");

                      }
             }
             else
             {
                 System.out.println("El cliente no esta conectado");
                 socket.close();
             }
       }      
       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");
        }
 }
}
en la linea que he puesto en negrita es en la que me peta el programa, debe ser por que no coge la ip del servidor y entonces no se puede conectar a el. De momento quiero hacer esto localhost, no se si habrá otro metodo para conectarse o que cosa.

No se aver si me podeis dar una idea de como arreglarlo

PD:Gracias cucuru , me ha servidor bastante lo que me has explicado
------------------------------------------------------------------------------------------


EDITO: YA HE SOLUCIONADO LO DE LA IP, SOLO HE PUESTO getlocaladdress(), pero ahora falla por otra cosa T_T algo que hay nulo cuando creo el paquete en el cliente.

Última edición por Juny18; 30/03/2009 a las 08:53