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