0

我尝试定期监控sketchup ruby​​插件中的url..

我搜索了一些代码来执行此功能:

require 'ping' 
def every_n_seconds(n) 
    loop do 
        before= Time.now 
        yield 
        interval=n-(Time.now-before) 
        sleep(interval) if interval>0 
    end 
end 
every_n_seconds(50) do 
   pingresult=Ping.pingecho("www.google.com") 
   puts pingresult 
   if pingresult="true" 
        puts "t" 
    else 
        puts "f!" 
    end 
end

但在第一行,我得到了错误:

LoadError: C:/Program Files (x86)/SketchUp/SketchUp 2013/Plugins/xxx.rb:3:in `require': 没有要加载的文件 -- ping

我想找到ping类库,但我什么也没找到..

所以我可以在哪里找到 ping 类或

还有其他方法可以实现该功能吗?

4

1 回答 1

1

自己运行ping有什么问题?

`ping -c 1 www.google.com`
if $?.exitstatus == 0
  puts "t"
else
  puts "f"
end

或者,甚至更好:

def ping(url)
  `ping -c 4 #{url}`
  $?.exitstatus == 0
end

if ping("www.google.com")
  puts "t"
else
  puts "f"
end

在单独的线程上运行:

def ping(url)
  `ping -c 4 #{url}`
  $?.exitstatus == 0
end

def every_n_seconds(n)
  loop do
    before= Time.now
    yield
    interval=n-(Time.now-before)
    sleep(interval) if interval>0
  end
end

ping_thread = Thread.new {
  every_n_seconds(50) do
    pingresult=ping("google.com")
    puts pingresult
    if pingresult
      puts "t"
    else
      puts "f!"
    end
  end
}

puts "Doing other things now..."

ping_thread.join()
于 2013-11-05T04:12:16.867 回答