ventajas usar tutorial puerto probar ncat desventajas con como comando udp netcat

tutorial - Usar netcat para enviar un paquete UDP sin enlace



usar comando nc (2)

Estoy tratando de usar netcat para simular un protocolo NAT transversal.

Tengo una instancia que está escuchando paquetes UDP en el puerto 6666, así:

nc -ul 6666

En otra ventana de terminal, estoy tratando de enviar periódicamente un paquete UDP desde el puerto 6666 (para abrir la ruta de retorno en mi enrutador, esto sería en un script que se repite cada 20 segundos para volver a abrir el puerto)

nc -u -p6666 mypinghost.com 4444

El problema es que netcat falla en esta llamada ping con el mensaje:

nc: enlace fallido: dirección ya en uso

Lo que implica que el oyente que se ha vinculado al puerto 6666 está bloqueando el envío de otro proceso desde ese puerto, o posiblemente que netcat esté intentando vincularse al 6666 para escuchar.

¿Es así como se escribe netcat, o puedo hacerle cosquillas de alguna manera para que me permita enviar un paquete sin vincularlo al puerto para escuchar?


No creo que puedas usar netcat de esa manera. Yo recomendaría escribir un script simple de Python que haga las tareas de envío y recepción en un proceso. De esta forma, puede mantener ese puerto de forma exclusiva y aun así realizar ambas tareas.


nc -ul 6666

Escuche en el puerto UDP 6666.

nc -u -p6666 mypinghost.com 4444

Usando el puerto UDP 6666 como puerto de origen, envíe a mypinghost: 4444.

nc: enlace fallido: dirección ya en uso

Eso sería en la segunda invocación de netcat , donde 6666 ya está siendo utilizado por el primero.

Lo que implica que el oyente que se ha vinculado al puerto 6666 está bloqueando el envío de otro proceso desde ese puerto

Correcto.

o posiblemente que netcat esté tratando de vincularse al 6666 para escuchar.

Y definitivamente eso. Usted le dijo que hiciera eso, así que lo hizo.

Lo que intenta hacer es imposible entre dos procesos en el mismo host. Solo un proceso puede usar un puerto UDP local específico a la vez, a menos que use SO_REUSEADDRESS , que netcat no parece implementar.

Como ha sugerido el otro afiche, la solución está en usar un solo proceso.