Advertisement
Guest User

wifi

a guest
Feb 23rd, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.78 KB | None | 0 0
  1. -- Библиотека OpenNet для WiFi-клиента
  2.  
  3. local component=require("component")
  4. local event = require("event")
  5.  
  6. local opennet = {}
  7. local ONcard
  8. local LocalIP
  9. local Router
  10. local ONport=1
  11.  
  12. function opennet.ver()
  13.   return "3.1"
  14. end
  15.  
  16. function opennet.getIP()
  17.   if not component.isAvailable("modem") then
  18.     ONcard=nil
  19.     return nil, "Сетевая карта не обнаружена"
  20.   end
  21.   ONcard=component.modem
  22.   ONcard.open(ONport)
  23.   local ok,err=ONcard.broadcast(ONport,"", "", "getip")
  24.   if not ok then  return ok, err  end
  25.   local Dist=math.huge
  26.   LocalIP=nil
  27.   Router=nil
  28.   while true do
  29.     local ev, addr, rout, _, dist, locip, _, mess = event.pull(1,"modem_message")
  30.     if ev then
  31.       if dist<Dist and addr == ONcard.address and mess == "setip" then
  32.         LocalIP=locip Router=rout Dist=dist
  33.       end
  34.     else
  35.       if LocalIP then return LocalIP, Dist
  36.       else  return nil, "Нет ответа от WiFi роутера" end
  37.     end
  38.   end
  39. end
  40.  
  41. function opennet.send(recIP, ... )
  42.   if not ONcard or not Router then
  43.     return nil, "Сетевая карта не инициализирована"
  44.   end
  45.   return ONcard.send(Router, ONport, recIP, LocalIP, ...)
  46. end
  47.  
  48. function opennet.receive(timeout)
  49.   local ev
  50.   repeat
  51.     ev = {event.pull(timeout,"modem_message")}
  52.     if not ev[1] then return nil end
  53.       if ev[2] == ONcard.address and ev[8]=="ping" then
  54.         opennet.send(ev[7], "pong" )
  55.         ev[2]=nil
  56.       end
  57.   until ev[2] == ONcard.address
  58.   return table.unpack(ev,7)
  59. end
  60.  
  61. function opennet.sendrec(recIP, ... )
  62.   local ok,err=opennet.send(recIP, ... )
  63.   if ok then
  64.     return opennet.receive(10)
  65.   else
  66.     return ok,err
  67.   end
  68. end
  69.  
  70. -----------------------------------------------------------------------
  71. return opennet
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement