netcatコマンドでコードを書かずにお手軽チャット環境作ってみる
nc(netcat)コマンドという万能コマンドがありまして、これを使うと簡単にTCPやUDPを使ってパケットの読み書きができます。
以下の例だと、HOSTの行と次の空行まで入力すれば、htmlの文章が返ってきます。
$ nc www.example.com 80 GET / HTTP/1.1 HOST:www.example.com HTTP/1.1 200 OK Accept-Ranges: bytes Cache-Control: max-age=604800 Content-Type: text/html 〜略〜 <!doctype html> <html> <head> <title>Example Domain</title> 〜略〜
こんなふうに手動でHTTPプロトコルを再現したりできるわけです。
ncコマンドは、リッスンモードというものがあり、これを使うと簡易的にサーバのように振る舞うことができます。
これを応用して、一方ではサーバを立ち上げます。
$ nc -l localhost 1234
もう一つ端末をひらき、クライアントを立ち上げます。
$ nc localhost 1234
これだけで、サーバとクライアントが準備できました。
あとは、端末に適当に文字を入力すると…
Hello World! こんにちは! 明日は大雪が降るそうですね(^_^;)
サーバ、クライアント両方の端末に同じ文字列が表示されました。
もちろん、サーバ側から打っても、クライアント側から打っても同じように表示されます。簡単ですね。
簡単のため、サーバもクライアントもlocalhostを用いましたが、別々のホストでも、接続先とポート番号さえ合わせれば同じように動きます。
双方に同じ文字列が表示されるのでどちらが送信したかわかりづらいのが欠点ですが、これだけでチャットができてしまうのは面白いですね。