En ubuntu, puedo abrir un puerto UDP:
nc -lu 5555
A continuación, en otra ventana de terminal, envía un mensaje:
echo "hello" | nc -u localhost 5555
El mensaje se recibe en el lado del oyente, como se esperaba.
Sin embargo, esto no parece funcionar en MacOS (10.14.5). La invocación del oyente se inicia y se bloquea como se espera, y el puerto parece estar abierto, según lsof:
nc 22583 thisuser 3u IPv4 0x7af131578e7df639 0t0 UDP *:5555
El lado emisor se completa sin errores, pero el mensaje no parece ser recibido en el lado receptor.
Si en su lugar utilizo una escucha y conexión TCP, todo funciona como se espera. Sin embargo, cuando se abre por primera vez la escucha TCP, aparece un mensaje emergente del tipo "¿Permitir que la aplicación nc abra el puerto?". (He olvidado el mensaje exacto - no se vuelve a dar).
Así que sospecho que de alguna manera el SO tiene un gancho de seguridad en los nuevos oyentes; pide permiso con TCP, pero por alguna razón descuida pedir permiso con UDP e implícitamente lo deniega.
¿Cómo puedo conseguir que esto funcione?