ruby学习二:如何定时监控网络中断
任务一:写一个ruby程序,每50秒钟向某个地址ping一次,如果没有相应,那么就发送警告信息。
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.sina.com")
puts pingresult
if pingresult="true"
puts "我向新浪的主机发送ping消息!"
else
puts "发送ping消息失败!"
end
end
这里的技巧
- 我们把一个方法块传递给了函数every_n_seconds,我们不但传递了变量“n”,还传递了方法。
- yield是一个关键字,传递过去的方法在这个地方使用。
- sleep也是一个关键字
- 这里用到了ping的ruby 标准库
任务二:写一个ruby 的服务器程序(soap),如果客服端调用,那么返回一个:hello
服务器端的编码:
require 'soap/rpc/standaloneServer'
class MyServer<SOAP::RPC::StandaloneServer
def initialize(*args)
super
add_method(self,'sayhelloto','username')
end
end
class MyServer
def sayhelloto(username)
"hello ,#{username}."
end
end
server=MyServer.new('coolserver','urn:mySoapServer','localhost',8888)
trap('INT') {Server.shutdown}
server.start
运行的有问题,以后在说把。
对于ruby的语法还需要多用一点时间学习。


浙公网安备 33010602011771号