TCPサーバを実装する
RubyでTCPサーバを簡単に実装するにはsocketライブラリのTCPServerクラスを使うと良い。
TCPServer.newには、接続を待ち受けるIPアドレスと、ポート番号を指定する。クライアントからの接続はTCPServer#acceptで待つ。TCPServer#acceptはクライアントとの接続を確立すると、クライアントと通信するソケットを返す。これを別スレッドに渡して1クライアント1スレッドで処理させる。
以下は上記のことを踏まえて、受信した内容をそのまま送信する、いわゆるエコーサーバを実装した例である。このサーバに対して、例えばtelnet localhost 1234してみると、確かに送信した内容を送り返してくるサーバが実装できたことがわかる。
require 'socket' server = TCPServer.new('0.0.0.0', 1234) loop do socket = server.accept Thread.start(socket){|s| while l = s.gets s.write l end s.close } end