¿Qué programa está usando este puerto?
Un servidor no arranca en el puerto 8080, o una prueba se detiene con «address already in use». O bien un programa ya tiene el puerto, o bien Windows lo ha reservado, y los dos errores se parecen. Así se distinguen.
Dos motivos por los que un puerto no se abre
| Qué ocurrió | Cómo se manifiesta | Qué hacer |
|---|---|---|
| Un programa tiene el puerto | El error dice que la dirección ya está en uso (EADDRINUSE, o el error de Windows 10048). El programa aparece en la lista de sockets. | Cierra ese programa o elige otro puerto. |
| Windows reservó el puerto | El error dice que el acceso está prohibido (error de Windows 10013) aunque nada escucha. Ningún programa aparece en la lista. | Elige un puerto fuera del rango reservado o libera el rango. Reiniciar el servicio WinNAT suele bastar. |
Con lo que Windows ya trae
La lista de sockets indica el propietario como un identificador de proceso. Busca el puerto y luego el identificador:
netstat -ano | findstr :8080
tasklist /fi "PID eq 4321"
Lo mismo en PowerShell, para TCP y para UDP:
Get-NetTCPConnection -LocalPort 8080 | Select-Object LocalAddress, State, OwningProcess
Get-NetUDPEndpoint -LocalPort 5353 | Select-Object LocalAddress, OwningProcess
Get-Process -Id 4321
Si ningún programa tiene el puerto, pregunta qué rangos ha reservado Windows:
netsh int ipv4 show excludedportrange protocol=tcp
Vuelve a ejecutarlo con protocol=udp. Los rangos se llevan por protocolo, así que un puerto puede estar libre para UDP y reservado para TCP.
Con la pestaña Tools
La pestaña Tools responde a las mismas preguntas sin consola:
- Sockets lista todos los sockets TCP y UDP del equipo, como
netstat -ano: qué escucha, qué está conectado, su estado y el programa que lo posee. No necesita sesión. Busca conlport:8080ostate:listen. - Port check pregunta lo que preguntó tu servidor: ¿puede un programa usar este puerto? Escribe 8080, una lista como
80, 443o un rango como9000-9100(hasta 1000 puertos) y pulsa Check. Cada puerto se prueba en TCP y UDP, en IPv4 e IPv6, y se marca como Free, In use (con el programa y su PID) o Reserved by Windows.
Por eso la respuesta es una tabla y no un sí o un no: Windows reserva rangos por protocolo, y un programa que escucha en IPv6 puede tener un puerto que está libre en IPv4.
No se envía nada por la red. Para cada puerto, la herramienta se lo pide a Windows en la dirección de loopback del propio equipo y lo devuelve al instante.
Cuando ya sabes quién lo tiene
Haz clic con el botón derecho en una fila de cualquiera de las dos tablas para elegir como objetivo el programa que tiene el puerto. Eso solo rellena el campo de objetivo, y nada cambia hasta que pulses START. Lo que sigue está en apuntar a una app.
Lo que no hace
Lee, no repara: nunca cierra un programa ni libera un rango reservado. Un socket de otra cuenta no muestra programa, salvo que la herramienta se ejecute como administrador.