async_socket_demo.lua 3.0 KB

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