【问题标题】:How to regular monitoring the url in sketchup ruby plugin?如何定期监控sketchup ruby​​插件中的url?
【发布时间】:2013-11-05 03:22:32
【问题描述】:

我尝试在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 类或

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

【问题讨论】:

    标签: ruby ping sketchup


    【解决方案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()
    

    【讨论】:

    • thankx,现在好像可以了,但是我发现了任何其他问题,我使用 Thread.new 来运行 ping 函数,但是当脚本运行到最后时线程会停止..
    • 由于我没有看到您实际运行的代码,并且我不完全理解您为什么使用多个线程,所以我无法给出真正准确的答案。对于初学者,您是在脚本末尾使用 thread.join(),还是只是创建一个新线程并在其上运行 every_n_seconds()?
    • 我更新了原始帖子以包含一个在单独线程上运行的示例...
    • 再次感谢!我在sketchup中运行你的代码,我觉得线程可以工作,但是sketchup没有响应,需要强制关闭..你知道为什么吗?
    • 我找到了解决方案sketchup.com/intl/en/developer/docs/ourdoc/ui#start_timer,再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多