3 votos

¿Se rompe la comunicación UDP Java en macOS?

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

Vi otro hilo en StackExchange que en realidad nunca fue contestada, pero parece que una de las personas se dieron cuenta de un problema similar en OSX.

No tengo el estándar firewall activado en preferencias ni tampoco creo que tengo especial configuración de red que pudiera interrumpir datagramas UDP. Así, si se me ejecuta el mismo programa en un equipo con Windows 7 VM a través de VirtualBox en el mismo hardware, el programa funciona bien.

Alguna idea de qué buscar o si este es 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 usando es ADTPro 2.0.2 como el de ethernet del servidor tratando de comunicarse con un viejo Apple //e que tiene un Uthernet II ejecutando el otro lado de ADTPro. Es un software para la transferencia de imágenes de disco a/de las máquinas.

El problema es que las transferencias de frecuencia tiempo de espera y abortar y parece que los paquetes se pierdan y que el código no está lo suficientemente sofisticados como para error de corregir y reenviar/reintentar. Mirando el código fuente, parece que todo está en UDP, que sin duda genera sospechas. De acuerdo con el mantenedor en GitHub, el hecho de que es el uso de UDP es histórico y nadie ha hecho el trabajo para convertir a TCP. Dado que el software funciona bien hablando con una máquina Windows con el mismo software y versiones de Java, supongo que es algo con macOS o el OSX Java build y preguntar si alguien sabe cómo determinar de seguro o de otra manera. ¿Eso ayuda?

1voto

Oskar Puntos 1242

No - UDP no es fundamentalmente roto en macOS (o cualquiera de los otros AppleOS)

Desde UDP son paquetes unicast y conocido también como poco fiable de paquetes de datos, mis primeros esfuerzos para solucionar esto sería establecer que el switch y el router son en realidad la entrega de los paquetes para el macOS de la interfaz.

Wireshark o una herramienta de gestión en la red, sería el lugar para grabar estos paquetes para ver si se los entreguen.

No me preocupa que la gente diciendo que el TCP es más o menos fiable que el UDP ya que una buena implementación de la UDP es mucho mejor que una mala implementación y usted está en el camino correcto centrarse en un área específica de la aplicación java que se consume datos específicos de Mac en su red. Muchos de sus datos son buenos, pero es como el detalle de la presión de los neumáticos y el color de la pintura cuando usted realmente necesita saber si el conductor tomó una derecha hacia abajo de la calle.

Son capaces de ejecutar Wireshark y verificar los paquetes o conseguir acceso a la red de registros para verificar el remitente y también puede que tenga que hacer un poco de investigación sobre UDP y pedir una continuación a la pregunta de si esto es realmente más acerca de las redes.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X