tcpsrv.lua 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. local libnet = require "libnet"
  2. --下面演示用阻塞方式做自动应答服务器,只适合W5500
  3. local dName = "D2_TASK"
  4. local function netCB(msg)
  5. log.info("未处理消息", msg[1], msg[2], msg[3], msg[4])
  6. end
  7. local function serTask(port, adapter)
  8. log.info("tcpsrv", "准备监听端口", socket.localIP(adapter), port)
  9. local tx_buff = zbuff.create(1024)
  10. local rx_buff = zbuff.create(1024)
  11. local netc
  12. local result, param, succ, rIP, rPort
  13. netc = socket.create(adapter, dName)
  14. socket.debug(netc, true)
  15. socket.config(netc, port)
  16. log.info("netc", netc)
  17. -- result = libnet.waitLink(dName, 0, netc)
  18. clients = {}
  19. local buff = zbuff.create(1024)
  20. while true do
  21. log.info("开始监听客户端连接, 无限时长")
  22. -- sys.wait(1000)
  23. result, code = libnet.listen(dName, 0, netc, 8) -- 支持最多8个等待accept的客户端
  24. log.info("监听结果", result, code)
  25. if result then
  26. log.info("有客户端连接请求到来, 接受连接")
  27. result, client, ip, port = socket.accept(netc, function(client, event, param)
  28. log.info("客户端事件", client, event, params)
  29. if event == socket.EVENT then
  30. local result = socket.rx(client, buff)
  31. log.info("客户端数据到来", result, buff:used())
  32. buff:seek(0)
  33. end
  34. end)
  35. log.info("accept结果", result, client, ip, port)
  36. socket.debug(client, true)
  37. if result then
  38. table.insert(clients, client)
  39. log.info("客户端连上了", client, "发送个问候")
  40. log.info("发送数据", socket.tx(client, "helloworld"))
  41. end
  42. else
  43. log.info("监听失败或超时", result, code)
  44. break
  45. end
  46. --sys.wait(1000)
  47. end
  48. libnet.close(dName, 5000, netc)
  49. log.info("服务器关闭了")
  50. end
  51. function SerDemo(port, adapter)
  52. sysplus.taskInitEx(serTask, dName, netCB, port, adapter)
  53. end
  54. -- sys.taskInit(function()
  55. -- while 1 do
  56. -- sys.wait(1000)
  57. -- log.info("meminfo", rtos.meminfo("sys"))
  58. -- end
  59. -- end)