async_socket_demo.lua 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. local rxbuf = zbuff.create(8192)
  2. local function netCB(netc, event, param)
  3. if param ~= 0 then
  4. sys.publish("socket_disconnect")
  5. return
  6. end
  7. if event == socket.LINK then
  8. elseif event == socket.ON_LINE then
  9. socket.tx(netc, "hello,luatos!")
  10. elseif event == socket.EVENT then
  11. socket.rx(netc, rxbuf)
  12. socket.wait(netc)
  13. if rxbuf:used() > 0 then
  14. log.info("收到", rxbuf:toStr(0,rxbuf:used()):toHex())
  15. log.info("发送", rxbuf:used(), "bytes")
  16. socket.tx(netc, rxbuf)
  17. end
  18. rxbuf:del()
  19. elseif event == socket.TX_OK then
  20. socket.wait(netc)
  21. log.info("发送完成")
  22. elseif event == socket.CLOSED then
  23. sys.publish("socket_disconnect")
  24. end
  25. end
  26. local function socketTask()
  27. local netc = socket.create(socket.ETH0, netCB)
  28. socket.debug(netc, true)
  29. socket.config(netc, nil, nil, nil, 300, 5, 6) --开启TCP保活,防止长时间无数据交互被运营商断线
  30. while true do
  31. local succ, result = socket.connect(netc, server_ip, server_port)
  32. if not succ then
  33. log.info("未知错误,5秒后重连")
  34. else
  35. local result, msg = sys.waitUntil("socket_disconnect")
  36. end
  37. log.info("服务器断开了,5秒后重连")
  38. socket.close(netc)
  39. log.info(rtos.meminfo("sys"))
  40. sys.wait(5000)
  41. end
  42. end
  43. local function UDPTask()
  44. local netc = socket.create(socket.ETH0, netCB)
  45. socket.debug(netc, true)
  46. socket.config(netc, nil, true, nil, 300, 5, 6) --开启TCP保活,防止长时间无数据交互被运营商断线
  47. while true do
  48. local succ, result = socket.connect(netc, server_ip, UDP_port)
  49. if not succ then
  50. log.info("未知错误,5秒后重连")
  51. else
  52. local result, msg = sys.waitUntil("socket_disconnect")
  53. end
  54. log.info("服务器断开了,5秒后重连")
  55. socket.close(netc)
  56. log.info(rtos.meminfo("sys"))
  57. sys.wait(5000)
  58. end
  59. end
  60. local function SSLTask()
  61. local netc = socket.create(socket.ETH0, netCB)
  62. socket.debug(netc, true)
  63. socket.config(netc, nil, nil, true, 300, 5, 6) --开启TCP保活,防止长时间无数据交互被运营商断线
  64. while true do
  65. local succ, result = socket.connect(netc, server_ip, ssl_port)
  66. if not succ then
  67. log.info("未知错误,5秒后重连")
  68. else
  69. local result, msg = sys.waitUntil("socket_disconnect")
  70. end
  71. log.info("服务器断开了,5秒后重连")
  72. socket.close(netc)
  73. log.info(rtos.meminfo("sys"))
  74. sys.wait(5000)
  75. end
  76. end
  77. function socketDemo()
  78. sys.taskInit(socketTask)
  79. end
  80. function UDPDemo()
  81. sys.taskInit(UDPTask)
  82. end
  83. function SSLDemo()
  84. sys.taskInit(SSLTask)
  85. end