web-dev-qa-db-ja.com

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_を1回だけプッシュするので、最初にrewind()して、もう一度送信したいと思います。

5
Alun

新しい接続ごとに同じファイルを開いて送信する場合は、次のように、-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'
4
meuh