Linux/MacなどでコマンドラインからTCP通信を行うには、telnetがよく使われますね。
HTTPアクセスをtelnetで行う例:
telnet example.com 80
GET / HTTP/1.1(改行)
Host: example.com(改行)
Connection: close(改行)
(空行)
HTTP 200 OK
Content-Type: text/html
... 以下略
UDPでTCPと同じようにテキストベースの通信を行うには、netcat(ncコマンド)が便利です。
netcatはtelnetの機能拡張版ともいえるツールで、TCP/UDPプロトコルを扱う上ではぜひ導入しておきたいものです。
nc コマンドが手元にインストールされてない場合、
CentOS系Linuxなら sudo yum install netcat
Debian なら sudo apt-get install netcat
OS X(Homebrew)なら brew install netcat
でインストールできるかと思います。
netcatは基本的にはtelnetと同じ使い方ができます。
使い方:
netcat -u 接続先IPまたはホスト名 ポート
-u はUDP通信を表すオプションで、省略するとデフォルトでTCP通信になります。
telnet同様、パイプなしで実行すると、標準入力待ち状態になり、Ctrl-Cで切断できます。
また、telnetと違い、サーバになることもできます。
netcat -l -u -p port
-l は Listenモード(サーバモード)、
-u はudpプロトコルでの待受を意味します。(省略するとTCPプロトコル)
-p は待ち受けるポート番号です。
簡易通信サーバになって接続をテストすることも可能です。便利ですね。
もちろん、サーバ・クライアント両方ともncでも通信できます。
サーバ側コンソール(ローカル):
$ nc -l -p 55440 # 適当なTCPポート55440で待受(udpでもOK)
クライアント側コンソール(ローカル):
$ nc localhost 55440 # サーバにつなぐ。(TCPならtelnetでもOK)
hogehoge(改行)
こうすると、サーバ側コンソールに hogehoge と表示されます。
逆にサーバ→クライアントにメッセージを送ることも可能です。
また、上記の例では同一ホストで実行していますが、もちろんIPアドレス、ドメイン指定などで別マシンとも通信できます。
ローカルでやると動くのに、別マシンにはつながらない、という場合はファイアウォールを確認するとだいたい解決するかと思います。
終了できない!と焦ったら、Ctrl-Cを推してみましょう。
ぜひご自身で色々試してみて下さい!