socketTask.lua 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. --- 模块功能:socket ssl短连接功能测试
  2. -- @author openLuat
  3. -- @module socketSslShortConnection.socketTask
  4. -- @license MIT
  5. -- @copyright openLuat
  6. -- @release 2018.03.27
  7. module(...,package.seeall)
  8. require"socket"
  9. require"ntp"
  10. --同步网络时间,因为证书校验时会用到系统时间
  11. ntp.timeSync()
  12. --启动socket客户端任务
  13. sys.taskInit(
  14. function()
  15. --单向认证测试时,此变量设置为false;双向认证测试时,此变量设置为true
  16. local mutualAuth = false
  17. local socketClient,connectResult
  18. local retryConnectCnt = 0
  19. while true do
  20. if not socket.isReady() then
  21. retryConnectCnt = 0
  22. --等待网络环境准备就绪,超时时间是5分钟
  23. sys.waitUntil("IP_READY_IND",300000)
  24. end
  25. if socket.isReady() then
  26. --双向认证测试
  27. if mutualAuth then
  28. --创建一个socket ssl tcp客户端
  29. socketClient = socket.tcp(true,{caCert="ca.crt",clientCert="client.crt",clientKey="client.key"})
  30. --阻塞执行socket connect动作,直至成功
  31. connectResult = socketClient:connect("36.7.87.100","4434")
  32. --单向认证测试
  33. else
  34. --创建一个socket ssl tcp客户端
  35. socketClient = socket.tcp(true,{caCert="ca.crt"})
  36. --阻塞执行socket connect动作,直至成功
  37. connectResult = socketClient:connect("36.7.87.100","4433")
  38. end
  39. if connectResult then
  40. retryConnectCnt = 0
  41. if socketClient:send("GET / HTTP/1.1\r\nHost: 36.7.87.100\r\nConnection: keep-alive\r\n\r\n") then
  42. result,data = socketClient:recv(5000)
  43. if result then
  44. --TODO:处理收到的数据data
  45. log.info("socketTask.recv",data)
  46. end
  47. end
  48. else
  49. retryConnectCnt = retryConnectCnt+1
  50. end
  51. --断开socket连接
  52. socketClient:close()
  53. if retryConnectCnt>=5 then link.shut() retryConnectCnt=0 end
  54. sys.wait(20000)
  55. else
  56. --进入飞行模式,20秒之后,退出飞行模式
  57. net.switchFly(true)
  58. sys.wait(20000)
  59. net.switchFly(false)
  60. end
  61. end
  62. end
  63. )