
いくつかのパフォーマンステストを実行しており、同じファイルをソケットに繰り返し送信しようとしています。
私が次のことをするなら:
$ 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'