Wednesday, August 12, 2009

server client with socket

  1. socketをrequireする
  2. TCPServer.open{}でサーバーオブジェクトを生成してブロックに渡す
  3. 複数のclientからのリクエストに答えられるようLoopでオブジェクトが死なないようにする
  4. Thread.start(server_obj.accept){}でclientからのリクエストがある毎にスレッドを立てる
  5. clientからのリクエストの処理後はそのソケットをcloseする
  6. クライアント側ではTCPSocket.open{}でサーバーへのソケットを開く
server.rb
#!/usr/bin/env ruby
# encoding: utf-8
require "socket"

TCPServer.open "127.0.0.1", 7430 do |server|
  loop do
    Thread.start(server.accept) do |socket|
      begin
        socket.write "hello from #{socket}"
      ensure
        socket.close
      end
    end
  end
end

client.rb
#!/usr/bin/env ruby
# encoding: utf-8
require "socket"

TCPSocket.open("127.0.0.1", 7430) do |soc|
  soc.write "hello"
  puts soc.read
end

No comments: