Advertisement
LuaGamer

opennet wifi

Aug 13th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. local component=require("component")
  2. local event = require("event")
  3.  
  4. local opennet = {}
  5. local ONcard
  6. local LocalIP
  7. local Router
  8. local ONport=1
  9. local ONlong=2
  10. local maxPacketSize
  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. ONcard.open(ONlong)
  24. maxPacketSize=ONcard.maxPacketSize()-100
  25. local ok,err=ONcard.broadcast(ONport,"", "", "getip")
  26. if not ok then return ok, err end
  27. local Dist=math.huge
  28. LocalIP=nil
  29. Router=nil
  30. while true do
  31. local ev, addr, rout, _, dist, locip, _, mess = event.pull(1,"modem_message")
  32. if ev then
  33. if dist<Dist and addr == ONcard.address and mess == "setip" then
  34. LocalIP=locip Router=rout Dist=dist
  35. end
  36. else
  37. if LocalIP then return LocalIP, Dist
  38. else return nil, "Нет ответа от WiFi роутера" end
  39. end
  40. end
  41. end
  42.  
  43. function opennet.send(recIP, ... )
  44. if not ONcard or not Router then
  45. return nil, "Сетевая карта не инициализирована"
  46. end
  47. return ONcard.send(Router, ONport, recIP, LocalIP, ...)
  48. end
  49.  
  50. function opennet.receive(timeout)
  51. local ev
  52. repeat
  53. ev = {event.pull(timeout,"modem_message")}
  54. if not ev[1] then return nil end
  55. until ev[2] == ONcard.address
  56. return table.unpack(ev,7)
  57. end
  58.  
  59. function opennet.sendrec(recIP, ... )
  60. local ok,err=opennet.send(recIP, ... )
  61. if ok then
  62. return opennet.receive(3)
  63. else
  64. return ok,err
  65. end
  66. end
  67.  
  68. -----------------------------------------------------------------------
  69. return opennet
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement