Solución asignar el puerto correcto yo por equivocación asigné el 58000 , pero había que asignar el 8080, que por wikipedia podemos ver que esta sin asignación.
.... int port = 8080; .... DatagramSocket dS = new DatagramSocket(null); dS.setReuseAddress(true); ds.bind(new InetSocketAddress(IP_emisor,port)); ....Problema 2.- java.net.BindException: Permiso denegado
Problema 3.- Java.net.BindException : Already bound
Estos problemas se solucionan poniendo de forma correcta la cosntrucción del DatagramSocket y DatagramPacket :
String IP_envio = ""; int port = 8080; DatagramSocket dS = new DatagramSocket(null); dS.setReuseAddress(true); DatagramPacet dP = new DatagramPacket(buff,buff.length, InetAddress.getByName(IP_envio) ,port); dS.send(dP);Esto no está ordenado , pero en general quedaría de la siguiente manera :
try {
try {
DatagramSocket dS = new DatagramSocket(null);
dS.setReuseAddress(true);
DatagramPacket dP = null;
synchronized(recepcionNodos.class){
try {
dP = new DatagramPacket(tablaEnca , tablaEnca.length, InetAddress.getByName(IP_envio) , port);
dS.send(dP);
System.out.println("Paquete enviado");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
try {
dS.send(dP);
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (SocketException e) {
e.printStackTrace();
}
Como crearlos Nos encontramos que para instanciar estas classes en nuestros respectivos proyectos tenemos que hacer lo siguiente :
DatagramSocket dS = new DatagramSocket(null);Esto lo que hace es crear el DatagramSocket por defecto , ya que podemos poner nosotros el puerto pero eso nos generará problemas innecesarios desde mi punto de vista.
dS.setReuseAddress(true);
dP = new DatagramPacket(tablaEnca , tablaEnca.length, InetAddress.getByName(IP_envio) , port);Sigue el formato de :
DatagramPacket dP = new DatagramPacket (buff , buff.length, IP , puerto);
No hay comentarios:
Publicar un comentario