¿Está rota la comunicación Java UDP en macOS?

1

He estado tratando de averiguar por qué un programa Java que utiliza la comunicación UDP en Windows funciona bien al 100%, pero parece soltar paquetes en una versión macOS de la JVM (8.x).

Vi otro hilo en StackExchange que Nunca se respondió realmente, pero parece que una de las personas también notó un problema similar en OSX.

No tengo el firewall estándar habilitado en las preferencias ni creo que tenga una configuración de red especial que pueda interrumpir los datagramas UDP. Además, si ejecuto el mismo programa en una máquina virtual Windows 7 a través de VirtualBox en el mismo hardware, el programa funciona bien.

¿Alguna idea sobre qué buscar o si se trata de un problema conocido?

ACTUALIZACIÓN 2018-11-24: más detalles. Estoy ejecutando Java 1.8.0_92-b14 de Oracle en un MacPro3,1 y macOS 10.13.6. El programa que estoy ejecutando es ADTPro 2.0.2 como un servidor Ethernet que intenta comunicarse con una antigua Apple // e que tiene una Uthernet II ejecutando el otro lado de ADTPro. Es un software para transferir imágenes de disco a / desde las máquinas.

El problema es que las transferencias a menudo se agotan y se cancelan, y parece que los paquetes se están perdiendo y que el código no es lo suficientemente sofisticado como para corregir errores y reenviarse / reintentar. En cuanto al código fuente, parece que todo está en UDP, lo que definitivamente genera sospechas. Según el mantenedor en GitHub, el hecho de que esté utilizando UDP es histórico y nadie ha hecho el trabajo de conversión a TCP. Dado que el software funciona bien hablando con una máquina Windows con el mismo software y las versiones de Java, supongo que es algo con macOS o OSX Java build y preguntando si alguien sabe cómo determinarlo o no. ¿Eso ayuda?

    
pregunta bjb 23.11.2018 - 18:09

1 respuesta

0

No: UDP no está fundamentalmente dañado en macOS (o cualquiera de los otros AppleOS)

Dado que los UDP son paquetes de unidifusión y también conocidos como paquetes de datos no confiables, mis primeros esfuerzos para solucionar este problema serían establecer que el conmutador y el enrutador están entregando los paquetes a la interfaz macOS.

Wireshark o una herramienta de administración en su red sería el lugar para registrar estos paquetes para ver si se están entregando.

No me preocuparía que la gente diga que TCP es más o menos confiable que UDP, ya que una buena implementación de UDP es mucho mejor que una mala implementación y está en la ruta correcta enfocándose en una aplicación Java específica que consume datos en una Mac específico en tu red. Muchos de sus detalles son buenos, pero es como detallar la presión en los neumáticos y el color de la pintura cuando realmente necesita saber si el conductor tomó una vuelta por su calle.

¿Puede ejecutar Wireshark y verificar los paquetes u obtener acceso a los registros de la red para verificar el remitente y también es posible que tenga que investigar un poco sobre UDP y hacer una pregunta de seguimiento si realmente se trata de redes?

respondido por el bmike 24.11.2018 - 17:47

Lea otras preguntas en las etiquetas