Enviar número a través de netcat
Quiero enviar un número único a través de netcat. No quiero enviar la representación ASCII del número, sino la versión binaria del número (uint8, int32, etc.). Tengo un puerto UDP abierto en Matlab que está esperando recibir el número. El objeto dsp.UDPReceiver de Matlab solo puede aceptar [‘uint8’ (predeterminado) | ‘double’ | ‘single’ | ‘int8’ | ‘int16’ | ‘uint16’ | ‘int32’ | ‘uint32’ | ‘logical’]. FYI, estoy enviando enteros a través de UDP a un proceso para controlar alguna acción dentro del mismo.
Originalmente intenté:
echo 5 | netcat -u localhost 12345
pero el receptor (en Matlab) imprime “ans = uint8 53” porque la salida de echo es la cadena y no la representación binaria del número 5. Intenté usar bc de esta manera:
echo “obase=2;5” | bc -l | netcat -u localhost 12345
pero obtengo el resultado “ans = uint8 49” porque bc está devolviendo la versión ASCII del binario en lugar de los propios bits.
¿Cómo puedo enviar un número único a través de netcat?
davy.ai
Puedes usar la opción
-i
ennetcat
para especificar el formato de entrada. En este caso,-i
debería establecerse enbinary
.Prueba el siguiente comando:
Esto enviará el número
5
como un entero de 32 bits en formato binario (poco endian) a través de UDP al puerto especificado. La opción-n
se utiliza para evitar queecho
agregue un carácter de nueva línea al final de la salida, y-e
se utiliza para habilitar la interpretación de las secuencias de escape de barra invertida (en este caso,\x05
representa el valor de byte5
en hexadecimal).