socketTask.lua 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. --- 模块功能:socket短连接功能测试
  2. -- @author openLuat
  3. -- @module socketShortConnection.socketTask
  4. -- @license MIT
  5. -- @copyright openLuat
  6. -- @release 2018.03.27
  7. module(...,package.seeall)
  8. require"socket"
  9. --启动socket客户端任务
  10. sys.taskInit(
  11. function()
  12. local retryConnectCnt = 0
  13. while true do
  14. if not socket.isReady() then
  15. retryConnectCnt = 0
  16. --等待网络环境准备就绪,超时时间是5分钟
  17. sys.waitUntil("IP_READY_IND",300000)
  18. end
  19. if socket.isReady() then
  20. --创建一个socket tcp客户端
  21. local socketClient = socket.tcp()
  22. --阻塞执行socket connect动作,直至成功
  23. if socketClient:connect("180.97.80.55",12415) then
  24. retryConnectCnt = 0
  25. if socketClient:send("heart data\r\n") then
  26. result,data = socketClient:recv(5000)
  27. if result then
  28. --TODO:处理收到的数据data
  29. log.info("socketTask.recv",data)
  30. end
  31. end
  32. else
  33. retryConnectCnt = retryConnectCnt+1
  34. end
  35. --断开socket连接
  36. socketClient:close()
  37. if retryConnectCnt>=5 then link.shut() retryConnectCnt=0 end
  38. sys.wait(20000)
  39. else
  40. --进入飞行模式,20秒之后,退出飞行模式
  41. net.switchFly(true)
  42. sys.wait(20000)
  43. net.switchFly(false)
  44. end
  45. end
  46. end
  47. )