tcpserver_sample.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * Copyright (c) 2006-2018, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2019-07-11 flybreak the first version
  9. */
  10. #include "tcpserver.h"
  11. #include <string.h>
  12. #define DBG_TAG "tcpserv"
  13. #define DBG_LVL DBG_LOG
  14. #include <rtdbg.h>
  15. static struct tcpserver *serv;
  16. static rt_uint8_t buf[1024];
  17. static void tcpserver_event_notify(tcpclient_t client, rt_uint8_t event)
  18. {
  19. int ret;
  20. switch (event)
  21. {
  22. case TCPSERVER_EVENT_CONNECT:
  23. LOG_D("client connect:%d", client->sock);
  24. break;
  25. case TCPSERVER_EVENT_RECV:
  26. ret = tcpserver_recv(client, buf, 1024, -1);
  27. if (ret > 0)
  28. {
  29. ret = tcpserver_send(client, buf, ret, 0);
  30. }
  31. break;
  32. case TCPSERVER_EVENT_DISCONNECT:
  33. LOG_D("client disconnect:%d", client->sock);
  34. break;
  35. default:
  36. break;
  37. }
  38. }
  39. static int tcpserver(int argc, char **argv)
  40. {
  41. if (argc != 3)
  42. {
  43. rt_kprintf("Usage:./select_server [ip] [port]\n");
  44. return -1;
  45. }
  46. serv = tcpserver_create(argv[1], atoi(argv[2]));
  47. tcpserver_set_notify_callback(serv, tcpserver_event_notify);
  48. return 0;
  49. }
  50. MSH_CMD_EXPORT(tcpserver, server start)
  51. static int tcpserver_stop(int argc, char **argv)
  52. {
  53. tcpserver_destroy(serv);
  54. return 0;
  55. }
  56. MSH_CMD_EXPORT(tcpserver_stop, tcpserver stop)