From: IKARASHI Akira Date: 1999-09-17T21:00:34+09:00 Subject: [ruby-list:16852] DRb/Chat 五十嵐です。 drbを使って、チャット(メッセージ交換?)プログラムを 書いてみたのですが、メソッドが呼ばれたときに、その呼び主を 知りたいと思ったのですが、知ることはできますか? -- BEGIN chats.rb require 'drb.rb' require 'thread' class ChatServer def initialize @mutex = Mutex.new @members = [] end def add_member(there) @mutex.synchronize do @members.push(there) end end def distribute(str) @mutex.synchronize do for m in @members m << str end end end end if __FILE__ == $0 here = "druby://#{`hostname`.chomp}:7640" puts here DRb.start_service(here, ChatServer.new) DRb.thread.join end -- END -- BEGIN chatc.rb require 'drb.rb' class ChatClient def <<(str) puts str end end if __FILE__ == $0 there = ARGV.shift unless there $stderr.puts("usage: #{$0} ") exit 1 end here = "druby://#{`hostname`.chomp}:7950" lo = DRbObject.new(ChatClient.new, here) DRb.start_service(here, lo) ro = DRbObject.new(nil, there) ro.add_member(lo) while gets ro.distribute($_) end end -- END -- IKARASHI Akira(ikarashi@d3.dion.ne.jp)