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

Alu*_*lun 6 performance networking netcat socat nc

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

如果我做这样的事情:

$ socat -b1048576 -u OPEN:/dev/zero TCP4-LISTEN:9899,reuseaddr,fork 
$ socat -b1048576 -u TCP:127.0.0.1:9899 OPEN:/dev/null
Run Code Online (Sandbox Code Playgroud)

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

但是,我真正想做的更像是:

$ socat -b1048576 -u OPEN:somefile.dat TCP4-LISTEN:9899,reuseaddr,fork 
$ myprog TCP:127.0.0.1:9899 > /dev/null
Run Code Online (Sandbox Code Playgroud)

但它只会推动somefile.dat一次,我真的很喜欢它rewind()从头开始并再次发送。

meu*_*euh 6

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

socat -b1048576 -U TCP4-LISTEN:9899,reuseaddr,fork OPEN:somefile.dat
socat TCP:127.0.0.1:9899 - >/dev/null
Run Code Online (Sandbox Code Playgroud)

如果您希望文件无限重复,您可以使用以下内容:

socat -b1048576 -U TCP4-LISTEN:9899,reuseaddr,fork SYSTEM:'while cat somefile.dat;do \: ;done'
Run Code Online (Sandbox Code Playgroud)