Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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>