LoginSignup
1
0

More than 3 years have passed since last update.

ncatとUNIXドメインソケットで1:Nのプロセス間通信(ストリームのマージ)を行う

Posted at

https://qiita.com/miminashi/items/f0dd914f3ec515e94927 というのを作ってみたけど、もっと単純にncatでできそうな気がしたので試してみた。

そもそも何がやりたいか

例えばシリアルポートが2つあったとして、これらの入力をマージしたい。
あるいは複数のプロセスの出力をマージして、ひとつのシリアルポートに出力したい。
ちょうど、tee file1 file2 ...と逆のことをやりたい感じ。

ncとncatの違い

ncとncatって何が違うのか知らなかったんだけど、オリジナルのほうがnc、nmapに付属してるのがncatとのことです。
http://www.intellilink.co.jp/article/column/security-net01.html

今回使うのはncatのほうで、ncでは複数のコネクションを扱うことができなかった。

ncatで複数のプロセスの出力をマージしてみる

  • -l 接続を待ち受ける
  • -k 複数の接続を許可する
  • -U UNIXドメインソケットを使用する

1:Nの1の側

ncat -k -U -l /tmp/sock

1:NのNの側

変数nの値を増やしながら、必要なだけ起動する(とりあえず2個)

n=1; while :; do printf '%s %s\n' "${n}" "$(date)"; sleep 1; done | ncat -U /tmp/sock

結果

$ ncat -k -U -l /tmp/sock
1 2019年 7月13日 土曜日 00時16分13秒 JST
1 2019年 7月13日 土曜日 00時16分14秒 JST
1 2019年 7月13日 土曜日 00時16分15秒 JST
1 2019年 7月13日 土曜日 00時16分16秒 JST
1 2019年 7月13日 土曜日 00時16分17秒 JST
2 2019年 7月13日 土曜日 00時16分17秒 JST
1 2019年 7月13日 土曜日 00時16分18秒 JST
2 2019年 7月13日 土曜日 00時16分18秒 JST
1 2019年 7月13日 土曜日 00時16分19秒 JST
2 2019年 7月13日 土曜日 00時16分20秒 JST
1 2019年 7月13日 土曜日 00時16分20秒 JST
2 2019年 7月13日 土曜日 00時16分21秒 JST

できたできた。
これでいいじゃん。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0