揮発性のメモ2

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

socatでUNIXドメインソケットをデータグラムで使う

待ち受け側

socat unix-recvfrom:/tmp/unko.sock,fork,mode=777 stdout

何か受信するたびに標準出力に表示する

,fork を付けないと一回ずつ受信して終わっちゃう
,mode=777 はUNIXドメインソケットファイル(/tmp/unko.sock)のパーミッションを変更する。 デフォルトはsrwxr-xr-x。 異なるユーザからのアクセスを受け付けるなら必要
,reuseaddr はUNIXドメインソケットのときは意味無さそう
もし /tmp/unko.sock が残ってたら消してからじゃないとエラーになる

送信側

socat unix-sendto:/tmp/unko.sock stdin

キーボードから何か打って改行するたびに送信する
相手が動いてないときは、データグラムでも Connection refused になるのが便利

パーミッションについて

待ち受け時、パーミッションはデフォルトではこんな感じになる

$ ls -l /tmp/unko.sock
srwxr-xr-x 1 unko unko 0  5月 29 23:28 /tmp/unko.sock

つまり、ソケットを作ったユーザー以外から書込み不可、送信を受け付けない
,mode=777 にしてしまえば

$ ls -l /tmp/unko.sock
srwxrwxrwx 1 unko unko 0  5月 29 23:38 /tmp/unko.sock

誰からでもウェルカムとなる