Quiero que un servidor de eco UDP obtenga paquetes y responda exactamente lo que ha recibido. ¿Cómo puedo simplemente hacer esto usando netcat
o socat
? Debería mantenerse vivo para siempre y manejar los paquetes que provienen de varios hosts.
netcat
socat
echoserver
Mohammad Hedayati
fuente
fuente
Respuestas:
Otra herramienta similar a netcat es la versión nmap
ncat
, que tiene muchos objetos incorporados para simplificar cosas como esta. Esto funcionaría:-e significa que ejecuta / bin / cat (para repetir lo que escribe)
-k significa mantener vivo, que sigue escuchando después de cada conexión
-u significa udp
-l 1235 significa que escucha en el puerto 1235
fuente
Solía
socat -v PIPE udp-recvfrom:5553,fork
ejecutar el servidor ysocat - udp:localhost:5553
para clientes. ¡ Fue de gran ayuda!fuente
socat TCP4-LISTEN:2000,fork EXEC:cat
También puede usar socat (en lugar de usar netcat) como servidor echo y netcat como cliente.
Servidor de eco Socat (escucha en el puerto TCP 1234):
Cliente Netcat (se conecta a serverip en el puerto TCP 1234):
fuente
Puede escribir un programa en C que se bifurca
nc -u -l -p 4321
y luego usa dup (2) para conectarse:Luego, en un bucle sin fin, el padre lee de stdin y escribe en stdout lo que lee el padre.
fuente
socat -v PIPE UDP-LISTEN:5555,fork
, pero la segunda conexión se rechaza. Por cierto, funciona bien con TCP-LISTEN. Estoy evitando codificar, de lo contrario podría escribirlo todo en C.Si está ejecutando en Windows y utiliza un entorno similar a Unix como cygwin, netcat migth no proporcionará el parámetro -e. Esto funcionó bien para mí.
http://bansky.net/echotool/
fuente
netcat
solución preinstalada en UbunutuEl
netcat
preinstalado en Ubuntu 16.04 provienenetcat-openbsd
y no tiene-c
opción, pero el manual ofrece una solución:Entonces ejemplo del cliente:
TODO: ¿cómo modificar el valor de la cadena de entrada? Lo siguiente no devuelve ninguna respuesta:
Sin embargo, el ejemplo de shell remoto funciona:
Sin embargo, no sé cómo tratar las solicitudes concurrentes.
fuente