Puerto inalcanzable cuando se usa DatagramSocket

He creado software de cliente y servidor que usa UDP para transferir datos (necesitamos usar UDP debido a las limitaciones de ancho de banda de TCP). Cuando lo ejecuto sobre localhost se ejecuta como lo quiero, así que moví la aplicación del servidor a un servidor real y fue entonces cuando las cosas salieron mal.

Después de una hora de depuración y rastreo, esto es lo que sucede:

  • El cliente envía un DatagramPacket sobre un DatagramSocket.
  • El servidor (computadora) lo recibe.
  • La aplicación nunca lo recibe y nunca devuelve el paquete correcto.
  • Mi sistema operativo envía un mensaje ICMP: destino inalcanzable (puerto inalcanzable)

El cliente se ejecuta en el puerto 25055 y el servidor en 25056-25060. En el seguimiento de Wireshark que he hecho, puedo ver que el paquete se envía desde y hacia el puerto correcto. Ya he desactivado el cortafuegos y otorgué permisos de usuario superior al software.

Piezas importantes de código:

socket = new DatagramSocket(clientPort);
socket = new DatagramSocket(serverPort);

private void sendPacket() throws Exception
{
packet = new DatagramPacket(data, data.length, address, serverPort);
socket.send(packet);
}

private void receivePacket(int packetSize) throws Exception
{
if(data == null || data.length != packetSize)
    data = new byte[packetSize];
packet = new DatagramPacket(data, packetSize);
socket.receive(packet);
}

¿Alguien tiene una idea de por qué sucede esto? Cualquier idea sería muy apreciada.

Respuesta 1

El método SecureRandom.getInstanceStrong () declara que puede lanzar una NoSuchAlgorithmException, sin embargo, el documento dice: Cada implementación de la plataforma Java es necesaria para soportar al menos ...

Cuando intento compilar (ejecutar maven install) en el eclipse, aparece un error de incompatibilidad. Parece que, por alguna razón, maven usa jre / jdk antiguo y no usa el especificado en el ...

Hice la entrevista problema callejero similitud de cadena. Inicialmente hice esto en Python. Esto me dio un error de límite de tiempo excedido para los últimos 5 casos de prueba. Luego probé el mismo en Java y la solución ...

Estoy comenzando una clase de programación Java en UCSD la próxima semana y estoy tratando de prepararme durante el fin de semana. Hay una biblioteca llamada objectdraw.jar que viene con el libro que usaremos para nuestra clase ...