← Volver al Blog

¿Qué está usando el puerto 5000 en Mac? (Es AirPlay Receiver)

macOS Monterey y versiones posteriores reservan los puertos 5000 y 7000 para AirPlay Receiver. Aquí te explicamos cómo confirmarlo y resolver el conflicto con tu servidor de desarrollo.

Intentas iniciar tu app de Flask (u otro servidor de desarrollo que usa el puerto 5000 por defecto) y de inmediato aparece esto:

Error: listen EADDRINUSE: address already in use :::5000

No iniciaste nada más. El culpable es el propio macOS.

AirPlay Receiver lo está usando

macOS Monterey (12), lanzado a finales de 2021, incorporó AirPlay Receiver como función nativa. Permite que tu Mac reciba transmisiones AirPlay desde un iPhone u otra Mac, igual que un Apple TV.

El problema: AirPlay Receiver vincula los puertos 5000 y 7000 automáticamente cuando está activado. El proceso que ocupa esos puertos es ControlCenter, una parte de macOS. Desde que salió Monterey, esto ha tomado por sorpresa a muchos desarrolladores.

Si tu Mac actualizó de Big Sur a Monterey o posterior, AirPlay Receiver se activó sin avisarte. El puerto 5000, que antes estaba libre, quedó reservado permanentemente.

Cómo confirmarlo

Ejecuta esto en Terminal:

lsof -i :5000

Si AirPlay Receiver es la causa, verás algo como esto:

COMMAND      PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ControlCe    423 aaron  33u  IPv4 0xabcd1234        0t0  TCP *:5000 (LISTEN)
ControlCe    423 aaron  34u  IPv6 0xabcd5678        0t0  TCP *:5000 (LISTEN)

ControlCe es la versión abreviada de ControlCenter. Si ves ese proceso ocupando el puerto 5000, AirPlay Receiver es la causa.

Solución 1: Desactivar AirPlay Receiver

La solución más rápida es desactivar AirPlay Receiver por completo. La ruta depende de tu versión de macOS:

macOS Ventura, Sonoma o Sequoia: Configuración del Sistema > General > AirDrop y Handoff > AirPlay Receiver (toggle apagado)

macOS Monterey: Preferencias del Sistema > Compartir > AirPlay Receiver (desmarcar)

Una vez que lo desactives, los puertos 5000 y 7000 quedan liberados de inmediato. No es necesario reiniciar. Puedes iniciar tu servidor de desarrollo enseguida.

Solución 2: Cambiar el puerto de tu app

Si usas AirPlay y quieres mantenerlo activo, simplemente configura tu servidor de desarrollo para usar otro puerto.

Flask:

flask run --port 5001

Next.js:

PORT=5001 next dev

Python http.server:

python -m http.server 5001

Cualquier puerto libre por encima de 1024 funciona. El puerto 5001 es la alternativa más común para Flask, ya que es el siguiente disponible y está fuera del rango de AirPlay.

¿Qué pasa con el puerto 7000?

La misma causa. ControlCenter también vincula el puerto 7000 cuando AirPlay Receiver está activo. Si tienes un conflicto en el puerto 7000, la solución es idéntica: desactiva AirPlay Receiver en Configuración del Sistema (o Preferencias del Sistema), o cambia el puerto de tu app.

Ejecutar lsof -i :7000 mostrará el mismo proceso ControlCe si AirPlay Receiver está activo.

Usando Portie

Si prefieres no usar Terminal, Portie muestra todos los puertos abiertos en tu Mac con el proceso correspondiente, actualizado automáticamente cada 3 segundos. Puedes ver a ControlCenter ocupando los puertos 5000 y 7000 en cuanto abres la app, sin escribir ningún comando.

La lista de puertos en tiempo real es gratuita. El desbloqueo de $8.99 (pago único) agrega la opción de terminar procesos directamente desde la lista y hacer escaneo de puertos remotos.

Prueba Portie gratis

Ve cada puerto abierto en tu Mac, qué app lo usa y cierra procesos desde la lista.

Descargar gratis