如何通过 socat / ncat 将文件内容重复发送到套接字

如何通过 socat / ncat 将文件内容重复发送到套接字

我正在运行一些性能测试,并且尝试将同一文件重复发送到套接字。

如果我做类似的事情:

$ socat -b1048576 -u OPEN:/dev/zero TCP4-LISTEN:9899,reuseaddr,fork 
$ socat -b1048576 -u TCP:127.0.0.1:9899 OPEN:/dev/null

然后,1MB 缓冲区iftop告诉我我正在推动 20Gbps。

然而,我真正想做的是:

$ socat -b1048576 -u OPEN:somefile.dat TCP4-LISTEN:9899,reuseaddr,fork 
$ myprog TCP:127.0.0.1:9899 > /dev/null

但它只推送somefile.dat一次,我真的很想把它推rewind()到开头并再次发送。

答案1

假设您要在每个新连接上打开并发送相同的文件,您可以使用-U、 的相反方向-u以及反转的地址,如下所示

socat -b1048576 -U TCP4-LISTEN:9899,reuseaddr,fork OPEN:somefile.dat
socat TCP:127.0.0.1:9899 - >/dev/null

如果您希望文件重复无限期,你可以使用这样的东西:

socat -b1048576 -U TCP4-LISTEN:9899,reuseaddr,fork SYSTEM:'while cat somefile.dat;do \: ;done'

相关内容