1

我正在尝试创建一个脚本来帮助我在内部 Windows 网络中移动大文件,并希望 Ruby 与 BitTorrent 结合使用是理想的。但是,我的代码似乎并没有真正下载任何东西。

我知道 RubyTorrent 项目已经被放弃了很长时间,所以我希望我的 Stackoverflow 同事之一可以帮助我。

我的代码(到目前为止是):

require 'rubytorrent'
bt = RubyTorrent::BitTorrent.new('http://www.mininova.org/get/2511754')
puts bt.tracker
puts bt.port
thread = Thread.new do
  while true
    puts bt.percent_completed
    sleep 15
  end
end
bt.on_event(self, :complete) { thread.kill }
thread.join

如您所见,“bt.tracker”行显示为 nil,因此传递 .torrent 文件可能存在问题,但为什么它可以传递文件的其余部分?

任何帮助使它工作将不胜感激。

4

2 回答 2

2

您的代码很好,唯一的问题是您在仍未连接到跟踪器时尝试打印 bt.tracker。如果连接后尝试打印,则没有问题

begin
  bt = RubyTorrent::BitTorrent.new('yourtorrent')
rescue IOError
  puts "Can't open the torrent"
end

bt.on_event(self, :tracker_connected) { |s, url| puts "[tracker] connected to tracker #{url}" }

puts 'Tracker : '+bt.tracker.to_s
puts bt.port
thread = Thread.new do
  while true
    puts 'Tracker : '+bt.tracker.to_s
    puts bt.percent_completed
    sleep 10
  end
end
bt.on_event(self, :complete) { thread.kill }
thread.join
于 2009-07-02T13:21:46.833 回答
-1

我认为它需要一个文件名。可以像需要的那么简单require 'open-uri'吗?

于 2009-06-25T19:28:19.763 回答