Ruby语言的出现,让不少编程人员找到了编程中的快乐之处。它的熟练应用可以帮助我们减少大量的编程时间,完好的完成我们所需要的功能。在这里我们就介绍其中Ruby监控网络的一些实现技巧。#t#
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监控网络任务二:写一个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监控网络的一些技巧的讲解应用。