いくつかのパフォーマンステストを実行していて、同じファイルをソケットに繰り返し送信しようとしています。
私が次のようなことをした場合:
_$ 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
_を1回だけプッシュするので、最初にrewind()
して、もう一度送信したいと思います。
新しい接続ごとに同じファイルを開いて送信する場合は、次のように、-U
、-u
への逆方向、および逆のアドレスを使用できます。
socat -b1048576 -U TCP4-LISTEN:9899,reuseaddr,fork OPEN:somefile.dat
socat TCP:127.0.0.1:9899 - >/dev/null
ファイルを繰り返したい場合ad infinitum、次のようなものを使用できます。
socat -b1048576 -U TCP4-LISTEN:9899,reuseaddr,fork SYSTEM:'while cat somefile.dat;do \: ;done'