Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

ncコマンドのUDP受信状態から結果を送り返す

二つのRasPiをUDPで繋いで通信するアプリを書いていた時
netcatで導通試験をする場合、送信と受信を毎回入れ替えて書いてました。
なんとなく不毛な気がして、調べたところ……ちゃんとありました。

実際のところ

guestとhostのraspberry Piがある想定で、hostは1111番でUDPパケットを待ち受けるが結果は何らか返したいとします。
仮に、ホストから"come"と返してみます。

サーバー(host)側

pi@host:~ $ echo "come" | nc -ul 1111

クライアント(guest)側

pi@guest:~ $ echo "22" | nc -u host'sIP 1111
come

TCPなら簡易WEB鯖としても使える

netcatで擬似的なWEB鯖をつくる - Bye Bye Moore
の記事で書いた通り、UDPでははなくTCPにはなりますが超軽量なWEB鯖を作ることも可能です。
netcatの"-e"オプションを有効化して常時待機できるUDPサーバを作るのも一考かもしれませが、
故郷の村を人質に取られてるとかでもない限りはUDPのコンセプトに反することはしないほうがいいでしょう、多分。

サーバー側

$ while true; do printf 'HTTP/1.1 200 OK\n\n<p>Hello</p>' | nc -l 8888; done

クライアント側

$ nc 192.168.100.137 8888
HTTP/1.1 200 OK

<p>Hello</p>