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