Ruby監(jiān)控網(wǎng)絡(luò)發(fā)送斷開警告信息
Ruby語言的出現(xiàn),讓不少編程人員找到了編程中的快樂之處。它的熟練應(yīng)用可以幫助我們減少大量的編程時間,完好的完成我們所需要的功能。在這里我們就介紹其中Ruby監(jiān)控網(wǎng)絡(luò)的一些實現(xiàn)技巧。#t#
Ruby監(jiān)控網(wǎng)絡(luò)任務(wù)一:寫一個ruby程序,每50秒鐘向某個地址ping一次,如果沒有相應(yīng),那么就發(fā)送警告信息。
- 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 "我向新浪的主機發(fā)送ping消息!"
- else
- puts "發(fā)送ping消息失敗!"
- end
- end
這里的技巧
我們把一個方法塊傳遞給了函數(shù)every_n_seconds,我們不但傳遞了變量“n”,還傳遞了方法。
yield是一個關(guān)鍵字,傳遞過去的方法在這個地方使用。,sleep也是一個關(guān)鍵字。這里用到了ping的ruby 標(biāo)準(zhǔn)庫。
Ruby監(jiān)控網(wǎng)絡(luò)任務(wù)二:寫一個ruby 的服務(wù)器程序(soap),如果客服端調(diào)用,那么返回一個:hello
服務(wù)器端的編碼:
- 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監(jiān)控網(wǎng)絡(luò)的一些技巧的講解應(yīng)用。