made netutil.ping actually return useful values
This commit is contained in:
parent
0712210768
commit
90afc8d18d
@ -1,5 +1,6 @@
|
||||
local computer = require "computer"
|
||||
local minitel = require "minitel"
|
||||
local event = require "event"
|
||||
local rpc = require "rpc"
|
||||
local netutil = {}
|
||||
|
||||
@ -9,6 +10,7 @@ function netutil.importfs(host,rpath,lpath)
|
||||
return host..":"..rpath
|
||||
end
|
||||
fs.mount(lpath,px)
|
||||
return true
|
||||
end
|
||||
|
||||
function netutil.exportfs(path)
|
||||
@ -18,21 +20,29 @@ function netutil.exportfs(path)
|
||||
rpcs.register(path.."_"..k,v)
|
||||
print(path.."_"..k)
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function netutil.ping(addr,times,timeout)
|
||||
function netutil.ping(addr,times,timeout, silent)
|
||||
local times, timeout = times or 5, timeout or 30
|
||||
local success, fail, time, avg = 0, 0, 0, 0
|
||||
for i = 1, times do
|
||||
local ipt = computer.uptime()
|
||||
local pid = minitel.genPacketID()
|
||||
computer.pushSignal("net_send",1,addr,0,"ping",pid)
|
||||
local t,a = event.pull(timeout,"net_ack")
|
||||
if t == "net_ack" and a == pid then
|
||||
print("Ping reply: "..tostring(computer.uptime()-ipt).." seconds.")
|
||||
if not silent then print("Ping reply: "..tostring(computer.uptime()-ipt).." seconds.") end
|
||||
success = success + 1
|
||||
time = time + computer.uptime()-ipt
|
||||
avg = time / success
|
||||
else
|
||||
print("Timed out.")
|
||||
if not silent then print("Timed out.") end
|
||||
fail = fail + 1
|
||||
end
|
||||
end
|
||||
if not silent then print(string.format("%d packets transmitted, %d received, %0.0f%% packet loss, %0.1fs",times,success,fail/times*100,time)) end
|
||||
return success > 0, success, fail, avg
|
||||
end
|
||||
|
||||
return netutil
|
||||
|
Loading…
Reference in New Issue
Block a user