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

Error Udp

Estas en el tema de Error Udp en el foro de Java en Foros del Web. hola a todos, que tal? espero que mejor que yo. Vereis tengo un cliente y un servidor (muy muy sencillos ambos) programados con sockets en ...
  #1 (permalink)  
Antiguo 12/12/2006, 16:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 18 años, 11 meses
Puntos: 0
Error Udp

hola a todos, que tal? espero que mejor que yo. Vereis tengo un cliente y un servidor (muy muy sencillos ambos) programados con sockets en udp. Lo ejecuto y el cliente al parecer no recibe nada del servidor y no entiendo por queé! Me estoy volviendo loca, he seguido paso a paso las instrucciones de un manualillo pero nada. EL servidor si que debe recibir lo que le manda el cliente pero cuando el servidor contesta al cliente este no ve nada. Os pego el código a ver si me podeis orientar a ver donde esta el error.

//EL SERVIDOR

public class ServidorChatUDP extends Thread {
private int puerto;

public ServidorChatUDP(int puerto){
this.puerto=puerto;
}

public void run(){
//String fraseCliente;
String fraseMayusculas;
byte[] datosRecibidos = new byte[255];
byte[] datosEnviar = new byte[255];
//Datagrama en el que se van a recibir los datos.
DatagramPacket paqueteRecibido = new DatagramPacket(datosRecibidos,datosRecibidos.lengt h);
InetAddress direccionIPcliente;

try{
DatagramSocket socketAcogida= new DatagramSocket(puerto);

while(true){
socketAcogida.receive(paqueteRecibido);
String fraseCliente= new String(paqueteRecibido.getData());
direccionIPcliente=paqueteRecibido.getAddress();
fraseMayusculas=fraseCliente.toUpperCase() + '\n';
datosEnviar=fraseMayusculas.getBytes();
DatagramPacket dp= new DatagramPacket(datosEnviar, datosEnviar.length, direccionIPcliente, puerto);
socketAcogida.send(dp);
}
}catch(Exception ex){
ex.printStackTrace();
}
}

}

//EL CLIENTE
public class ClienteChatUDP extends Thread{
private String ip;
private int puerto;
byte[] datosRecibidos = new byte[100];
byte[] datosEnviar = new byte[100];
InetAddress direccionIPcliente;
int puertoCliente;

public ClienteChatUDP(String ip,int puerto){
this.ip=ip;
this.puerto=puerto;
}

public void run(){
try{
//Se crea la variable paqueteRecibido que es el datagrama para almacenar la respuesta del servidor
DatagramPacket paqueteRecibido = new DatagramPacket(datosRecibidos, datosRecibidos.length);
DatagramSocket socketCliente = new DatagramSocket();
BufferedReader entradaDesdeUsuario= new BufferedReader(new InputStreamReader(System.in));
String frase=entradaDesdeUsuario.readLine();
direccionIPcliente = InetAddress.getByName("localhost");
datosEnviar= frase.getBytes();
DatagramPacket dp= new DatagramPacket(datosEnviar, datosEnviar.length, direccionIPcliente, puerto);
socketCliente.send(dp);
socketCliente.receive(paqueteRecibido);
String fraseModificada = new String(paqueteRecibido.getData());
System.out.println("DESDE EL SERVIDOR: " +fraseModificada);

socketCliente.close();

}catch(Exception ex){
ex.printStackTrace();
}

}
}
  #2 (permalink)  
Antiguo 13/12/2006, 05:18
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 18 años, 11 meses
Puntos: 0
Re: Error Udp

¿Podria ser que no están bien conectados los sockets?
  #3 (permalink)  
Antiguo 13/12/2006, 05:24
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Error Udp

Tienes al cliente y al servidor ambos en local??
  #4 (permalink)  
Antiguo 13/12/2006, 06:34
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 18 años, 11 meses
Puntos: 0
Re: Error Udp

Si, están tanto el cliente como el servidor en la misma máquina.
Gracias. ¿Ves algo raro?
  #5 (permalink)  
Antiguo 14/12/2006, 02:34
Avatar de Valkam  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Error Udp

Podrías probar instanciar el socket cliente de otra manera. Es decir, en tu código no especificas al crear el socket, contra que máquina realizará conexiones. Solo especificas el servidor en el paquete que envías. Es posible que por eso estes enviando correctamente los datagramas pero no recibiendolos. Prueba cambiar la línea

DatagramSocket socketCliente = new DatagramSocket();

por

DatagramSocket socketCliente = new DatagramSocket(puerto, InetAddress.getByName("localhost"));

A ver si hay suerte
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 22:44.