作为分拆这个堆栈溢出问题除了一些调整之外,我想实现相同的目标。
我想连接到主机,逐行发送二进制文件,并在每行之间有几秒钟的延迟......并且它必须位于同一连接中。我想要发送的字符串主要是基于文本的,但该行中有一些不可打印的字符。
这是我要发送的字符串/行的示例(每个文件数千行):
<null>e<null><null>00326513,6598,no,8,,2z<null>
The <null>
value 是十六进制值0x00
.
我已经从第一个条目重写了我的问题,但是@mzet回答了我原来的问题,因为我的问题只是文本,但后来我发现我的字符串有这些0x00
我一开始看不到里面的字符。我想用他的答案作为基础,因为我认为它几乎有效,但可能需要调整,所以这是他的贡献,而不是我的。
如果我有一个包含 3 行的文件:
<null>e<null><null>00370513,6598,no,8,,2z<null>
<null>f<null><null>00891548,6598,yes,8,,3z<null>
<null>f<null><null>00129525,6598,yes,8,,2z<null>
然后我想我可以调整@mzet回答并替换<null>
我的文件中的值\x00
并设置-e
on the echo
命令:
[root@srv]# mkfifo /tmp/fifoIn; cat /tmp/fifoIn | nc localhost 2222 &
[root@srv]# cat myfile | while read line; do echo -ne $line; sleep 2; done > /tmp/fifoIn
当我这样做时,我可以看到x00
在服务器端:
[root@srv]# nc -l 2222
x00ex00x0000370513,6598,no,8,,2zx00
x00fx0000891548,6598,yes,8,,3zx00
x00fx00x0000129525,6598,yes,8,,2zx00
是否可以按照我的要求发送二进制(文本?)文件?如果无法逐行发送文件,是否可以将一个字符串发送数千次?绝对必要的是,它们不需要是唯一的或在文件中,因为我可以使用重复的相同字符串进行管理。
EDIT #1
为什么我的脚本只向服务器发送一行(我希望发送 4 行),然后它就永远暂停(?)。客户端(或服务器)关闭其连接,但不会出现任何错误:
rm -f /tmp/fifofile
mkfifo /tmp/fifofile
cat /tmp/fifofile | nc 192.168.20.6 5000 &
sleep 1
i="0"
while [ $i -lt 4 ]
do
echo "$i"
echo -ne "\x00e\x00\x00001212dsfdsfdsfsdfsdfsdfdsf\x00" | tee /tmp/fifofile
sleep 1
i=$[$i+1]
done