socketTask.lua 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. --- 模块功能:socket ssl短连接飞行模式功能测试
  2. -- @author openLuat
  3. -- @module socketSslShortConnectionFlymode.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. while true do
  16. if not socket.isReady() then
  17. --等待网络环境准备就绪,超时时间是5分钟
  18. sys.waitUntil("IP_READY_IND",300000)
  19. end
  20. if socket.isReady() then
  21. --单向认证测试时,此变量设置为false;双向认证测试时,此变量设置为true
  22. local mutualAuth = false
  23. local connectCnt,socketClient = 0
  24. --双向认证测试
  25. if mutualAuth then
  26. --创建一个socket ssl tcp客户端
  27. socketClient = socket.tcp(true,{caCert="ca.crt",clientCert="client.crt",clientKey="client.key"})
  28. --阻塞执行socket connect动作,直至成功
  29. while not socketClient:connect("36.7.87.100","4434") do
  30. connectCnt = connectCnt+1
  31. sys.wait(2000)
  32. if connectCnt==3 then break end
  33. end
  34. --单向认证测试
  35. else
  36. --创建一个socket ssl tcp客户端
  37. socketClient = socket.tcp(true,{caCert="ca.crt"})
  38. --阻塞执行socket connect动作,直至成功
  39. while not socketClient:connect("36.7.87.100","4433") do
  40. connectCnt = connectCnt+1
  41. sys.wait(2000)
  42. if connectCnt==3 then break end
  43. end
  44. end
  45. if connectCnt~=3 then
  46. if socketClient:send("GET / HTTP/1.1\r\nHost: 36.7.87.100\r\nConnection: keep-alive\r\n\r\n") then
  47. result,data = socketClient:recv(5000)
  48. if result then
  49. --TODO:处理收到的数据data
  50. log.info("socketTask.recv",data)
  51. end
  52. end
  53. end
  54. --断开socket连接
  55. socketClient:close()
  56. sys.wait(2000)
  57. end
  58. --进入飞行模式,20秒之后,退出飞行模式
  59. net.switchFly(true)
  60. sys.wait(20000)
  61. net.switchFly(false)
  62. end
  63. end
  64. )