¿Pueden dos procesos/aplicaciones escuchar por el mismo puerto?

Iniciado por opportunity, 22 Septiembre 2012, 09:46 AM

0 Miembros y 1 Visitante están viendo este tema.

moikano→@

He hecho una prueba y parece ser que dos procesos no pueden escuchar por el mismo puerto.

Prueba:
Arranco el servidor web Apache escuchando por el puerto 80.
Intento poner netcat a escuchar en el mismo puerto

ncat -l -p 80

Retorna error:

ncat: bind to 0.0.0.0:80: Address already in use. QUITTING.

ó tmb:
ncat localhost -l -p 80
ncat: bind to 127.0.0.1:80: Address already in use. QUITTING.

Mirando documentacion de TCP/IP tmb parece que el standard no lo permite por definicion.

Solo se me ocurre que sea posible saltarse el standard buscando algun bug en el s.o.


Has probado con el socat? con esa variante del netcat creo que si que se puede, pero los parametros no son tan sencillos como en el netcat original.

opportunity

He probado con socat y tmb da error:

En una consola pongo a la escucha nc en el puerto 80 ejecutando:

nc -l -p 80

En otra consola ejecuto socat a ver que ocurre:

socat TCP4-LISTEN:80 TCP4:www.google.com:80

(este comando pone a la escucha al pc en el puerto 80 y el trafico que reciba lo redirige al server www.google.com por el puerto 80)

Y el resultado es:
2012/11/02 03:57:07 socat[2177] E bind(3, {AF=2 0.0.0.0:80}, 16): Address already in use

Segun dice el error, el puerto ya esta en uso y por tanto no puede hacer bind.

Hago la misma prueba pero usando solamente socat:

Me pongo a la escucha del puerto 80 redirigiendo a www.google.com:80:

socat TCP4-LISTEN:80 TCP4:www.google.com:80

Intento ponerme a la escucha otra vez por el puerto 80 pero redirigiendo a www.bing.com:

socat TCP4-LISTEN:80 TCP4:www.bing.com:80

Y de nuevo obtengo el mismo error:

2012/11/02 04:03:01 socat[2187] E bind(3, {AF=2 0.0.0.0:80}, 16): Address already in use

Por lo que parece, segun disegno de TCP/IP no es posible poner dos procesos a escuchar por el mismo puerto.