我正在运行一些性能测试,并且尝试将同一文件重复发送到套接字。
如果我做类似的事情:
$ 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'