testSocket.lua 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. --- testSocket
  2. -- @module asyncSocket
  3. -- @author AIRM2M
  4. -- @license MIT
  5. -- @copyright openLuat.com
  6. -- @release 2018.10.27
  7. require "socket"
  8. module(..., package.seeall)
  9. -- 此处的IP和端口请填上你自己的socket服务器和端口
  10. local ip, port, c = "180.97.80.55", "12415"
  11. -- 异步接口演示代码
  12. local asyncClient
  13. local clientConnected
  14. sys.taskInit(function()
  15. while true do
  16. while not socket.isReady() do sys.wait(1000) end
  17. asyncClient = socket.tcp()
  18. while not asyncClient:connect(ip, port) do sys.wait(2000) end
  19. clientConnected = true
  20. while asyncClient:asyncSelect(60, "ping") do end
  21. clientConnected = false
  22. asyncClient:close()
  23. end
  24. end)
  25. -- 测试代码,用于异步发送消息
  26. -- 这里演示如何用非线程发送数据
  27. sys.timerLoopStart(function()
  28. if clientConnected then
  29. asyncClient:asyncSend("0123456789")
  30. end
  31. end, 10000)
  32. -- 测试代码,异步回调接收数据
  33. sys.subscribe("SOCKET_RECV", function(id)
  34. if asyncClient.id == id then
  35. local data = asyncClient:asyncRecv()
  36. log.info("这是服务器下发数据:", #data, data:sub(1, 30))
  37. end
  38. end)
  39. sys.timerLoopStart(function()
  40. log.info("打印占用的内存:", _G.collectgarbage("count"))-- 打印占用的RAM
  41. log.info("打印可用的空间", rtos.get_fs_free_size())-- 打印剩余FALSH,单位Byte
  42. end, 1000)