揮発性のメモ2

http://d.hatena.ne.jp/iww/

socatで UDPを受信するたびにプログラムを起動する

UDPで受信したものを標準出力に表示するだけのは次の通り

socat udp-listen:12345,reuseaddr stdout

送信側はこう

echo "hello,world!" | socat stdin udp-sendto:192.168.0.11:12345


これを、パケット受信ごとにダンプしたりしたいときは次のように変える

socat udp-recvfrom:12345,reuseaddr,fork system:"hexdump -C >&2"

udp-listenはずっと待ち受け続けるけど、udp-recvfromは1パケットだけ受信して閉じる
forkを付ければまた受信をする

systemはプログラムをsysytem関数で起動する
execでも起動するけど、リダイレクトとか使えないので必要に応じて使い分ける


基本的に、起動したプログラムの標準出力は送信元に返送される
たとえばダンプして中身を見たいときは標準エラー出力に出すと良い