I am trying to write a client/server application using dRuby drb-2.0b1 onWin XP(Pro) ruby 1.7.3 (2002-11-17) [i386-mswin32] Got it working in a single threaded mode (see code below). But need some help to get it multi-threaded. I have commented out the multi-threading part because it does not work. Any help will be highly appreciated. Thanks, --- shanko # ========================================== # Server code require 'drb' require 'timeout' STDOUT.sync = true class TstSrvr def initialize @work_threads = [] end def time_now "It is: " + Time.now.to_s end def work_request(owner = "", work_id = 0) return "Sorry, owner cannot be empty string" if owner == "" return "Sorry #{owner}, invalid work_id" if work_id < 1 ret = "Working on [" + work_id.to_s + "] from " + owner #t = Thread.new { sleep(0.1) puts "Start #{owner}:#{work_id}> " + `echo %TIME%` puts `ping localhost` puts "Stop #{owner}:#{work_id}> " + `echo %TIME%` # } #@work_threads << t #t.join ret end def check_work(owner = "", work_id = 0) # Stub for checking if the work is over end def bye(msg="") puts msg #p @work_threads #@work_threads.each { |t| t.join } Thread.new {sleep(0.1); exit(1)} nil end end srvObj = TstSrvr.new begin DRb.start_service("druby://localhost:5555",srvObj) DRb.thread.join rescue RuntimeError puts 'Got runtime error: ' puts $! DRb.stop_service retry end # ========================================== ## Client Code require 'drb' STDOUT.sync = true begin DRb.start_service cliObj = DRbObject.new(nil,"druby://localhost:5555") 2.times { |i| puts cliObj.time_now puts cliObj.work_request("_shanko",i+1) sleep(2) } # cliObj.bye('Bye Bye') rescue RuntimeError puts 'Connect error:' puts $! end # ========================================== ## Code to stop the server require 'drb' cliObj = DRb::DRbObject.new(nil,"druby://localhost:5555") cliObj.bye('Bye Bye')