TCPクライアントを実装する
TCPクライアントを実装するにはsocketライブラリのTCPSocketを使う。以下は簡単なHTTPクライアントの例である。
require 'socket' TCPSocket.open('www.yahoo.co.jp', 80){|s| s.print "GET / HTTP/1.0\r\n\r\n" print s.read }
TCPSocket.openには、接続先のIPまたはホスト名と、ポート番号を指定する。ブロックには接続済みのソケットが渡される。ソケットはIOのサブクラスなので、IOと同様にprintやreadといったメソッドを使って、自由に通信することができる。ブロックを抜けるとソケットは自動的にcloseで閉じられる。
TCPSocket.openにブロックを渡さない場合は、接続済みのソケットが返される。こちらは通信が終わったら自分でTCPSocket#closeで通信を閉じる必要がある。以下は上記のコードをブロックを使わずに書きなおした例である。
require 'socket' begin s = TCPSocket.open('www.yahoo.co.jp', 80) s.print "GET / HTTP/1.0\r\n\r\n" print s.read ensure s.close if s end