【发布时间】:2014-04-28 23:10:36
【问题描述】:
我需要从标准输入读取十六进制数据,将其转换为二进制,使用netcat 发送,接收回复,转换回十六进制并打印到标准输出。我愿意:
# xxd -r -p | nc -u localhost 12345 | xxd
然后以十六进制输入我的数据并按 Enter。但是直到我按Ctrl+D 才发送,所以收到回复后我无法发送另一个数据包。看起来xxd -r -p 不写入二进制数据,直到给出EOF。有没有办法让它写在换行符之后?
【问题讨论】:
-
为什么需要以二进制形式发送?十六进制应该可以正常工作。二进制实际上是将所需的字节数乘以 4(十六进制是每字节 2 次,二进制是每字节 8,2/8=4)
-
@phyrrus9 我认为“二进制”的 OP 定义是 8 位字节流,而不是 ascii 1 和 0 流。例如,尝试
echo 737461636b6f766572666c6f772e636f6d0a | xxd -p -r