tutorial test udp netcat

test - ¿Cómo enviar solo un paquete UDP con netcat?



telnet udp (4)

En un netcat actual (v0.7.1) tiene un modificador -c:

-c, --close close connection on EOF from stdin

Por lo tanto,

echo "hi" | nc -cu localhost 8000

debería hacer el truco.

Deseo enviar solo un valor corto en un paquete UDP, pero ejecutando el comando

echo -n "hello" | nc -4u localhost 8000

Puedo ver que el servidor está recibiendo el saludo pero tengo que presionar Ctrl + c para salir del comando netcat.

¿Cómo puedo dejar de fumar después de enviar un saludo ?

Lo siento, por el ruido, volví a leer la página del manual y encontré la opción -q .

echo -n "hello" | nc -4u -q1 localhost 8000

funciona (se cierra después de 1 segundo).

Por alguna razón, no funciona con -q0 .


Netcat envía un paquete por nueva línea. Entonces estás bien. Si haces algo más complejo, entonces podrías necesitar algo más.

Estaba engañando con Wireshark cuando me di cuenta de esto. No sé si ayuda.


No encontré la opción -q1 en mi netcat. En su lugar usé la opción -w1 . A continuación se muestra el script bash que hice para enviar un paquete udp a cualquier host y puerto:

#!/bin/bash def_host=localhost def_port=43211 HOST=${2:-$def_host} PORT=${3:-$def_port} echo -n "$1" | nc -4u -w1 $HOST $PORT


Si usas bash, también podrías escribir

echo -n "hello" >/dev/udp/localhost/8000

y evitar todas las idiosincrasias e incompatibilidades de netcat.

Esto también funciona enviando a otros hosts, por ejemplo:

echo -n "hello" >/dev/udp/remotehost/8000

Estos no son dispositivos "reales" en el sistema de archivos, sino bash aliases "especiales".