加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby:Ping.pingecho缺失

发布时间:2020-12-17 01:28:10 所属栏目:百科 来源:网络整理
导读:Ruby过去常常使用Ping.pingecho方法,但似乎(和Ping模块)有时会消失: % rvm use 1.8.7Using ~/.rvm/gems/ruby-1.8.7-p334% ruby -rping -e 'p Ping.pingecho "127.0.0.1"'true% rvm use 1.9.2Using ~/.rvm/gems/ruby-1.9.2-p180% ruby -rping -e 'p Ping.pin
Ruby过去常常使用Ping.pingecho方法,但似乎(和Ping模块)有时会消失:

% rvm use 1.8.7
Using ~/.rvm/gems/ruby-1.8.7-p334
% ruby -rping -e 'p Ping.pingecho "127.0.0.1"'
true
% rvm use 1.9.2
Using ~/.rvm/gems/ruby-1.9.2-p180
% ruby -rping -e 'p Ping.pingecho "127.0.0.1"'
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- ping (LoadError)
        from <internal:lib/rubygems/custom_require>:29:in `require'
% ruby -e 'p Ping.pingecho "127.0.0.1"'
-e:1:in `<main>': uninitialized constant Object::Ping (NameError)

它移动到不同的库(所以我需要加载它吗?),或者
它已被删除,并替换为不同的模块(那么我应该用什么来确定IP是否可以访问?).

解决方法

不知道为什么或在哪里消失了. Rails仍然有 Ping级.稍微适应(使用类方法)将是:

require 'timeout'
require 'socket'

class Ping 
  def self.pingecho(host,timeout=5,service="echo")
    begin
      timeout(timeout) do
        s = TCPSocket.new(host,service)
        s.close
      end
    rescue Errno::ECONNREFUSED
      return true
    rescue   Timeout::Error,StandardError 
      return false 
    end
    return true
  end
end

p Ping.pingecho("127.0.0.1") #=> true
p Ping.pingecho("localhost") #=> true

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读