tcpecho6.c 859 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include <rtthread.h>
  2. #include <finsh.h>
  3. #include <lwip/api.h>
  4. #define TCP_ECHO_PORT 10001
  5. void tcpecho6(void)
  6. {
  7. struct netconn *conn, *newconn;
  8. err_t err;
  9. conn = netconn_new(NETCONN_TCP_IPV6);
  10. netconn_bind_ip6(conn, IP6_ADDR_ANY, TCP_ECHO_PORT);
  11. netconn_listen(conn);
  12. while(1)
  13. {
  14. err = netconn_accept(conn, &newconn);
  15. if(err == ERR_OK)
  16. {
  17. struct netbuf *buf;
  18. void *data;
  19. u16_t len;
  20. while(netconn_recv(newconn, &buf) == ERR_OK)
  21. {
  22. do
  23. {
  24. netbuf_data(buf, &data, &len);
  25. err = netconn_write(newconn, data, len, NETCONN_COPY);
  26. if(err != ERR_OK)
  27. rt_kprintf("netconn_write() error\n");
  28. }while(netbuf_next(buf) >= 0);
  29. netbuf_delete(buf);
  30. }
  31. netconn_delete(newconn);
  32. }
  33. }
  34. }
  35. #ifdef RT_USING_FINSH
  36. #include <finsh.h>
  37. FINSH_FUNCTION_EXPORT(tcpecho6, startup tcp echo server via ipv6);
  38. #endif