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