ESP32 TCP客户端

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP32 TCP客户端相关的知识,希望对你有一定的参考价值。

我想在ESP32上的Windows和TCP客户端上设置TCP服务器。主要的想法是发送字符串到ESP32更改它并将其发送回服务器,但我真的是新的所有这些东西,并坚持在ESP32上设置TCP客户端。示例或参考将非常有用。

答案

你如何与ESP沟通?如果你通过UART进行通信,只需通过写UART端口发送他需要的AT命令:

“AT + CIPSTATUS r n”然后等待他的回复。

如果您直接使用计算机连接到ESP32,只需使用putty并直接向其发送AT命令即可。

可以在此处找到AT命令的非详尽列表:https://www.espressif.com/sites/default/files/documentation/esp32_at_instruction_set_and_examples_en.pdf

另一答案
int create_ipv4_socket()
{
  struct addrinfo hints;
  struct addrinfo *res;
  struct in_addr *addr;

  hints.ai_family = AF_INET;
  hints.ai_socktype = SOCK_STREAM;

  int err = getaddrinfo(UDP_IPV4_ADDR, TCP_PORT, &hints, &res);

  if(err != 0 || res == NULL) {
    printf("DNS lookup failed err=%d res=%p
", err, res);
    return -1;
  }

  /* Code to print the resolved IP.

     Note: inet_ntoa is non-reentrant, look at ipaddr_ntoa_r for "real" code */
  addr = &((struct sockaddr_in *)res->ai_addr)->sin_addr;
  printf("DNS lookup succeeded. IP=%s
", inet_ntoa(*addr));

  l_sock = socket(res->ai_family, res->ai_socktype, 0);
  if(l_sock < 0) {
    printf("... Failed to allocate socket.
");
    freeaddrinfo(res);
    return -1;
  }

  struct timeval to;
  to.tv_sec = 2;
  to.tv_usec = 0;
  setsockopt(l_sock,SOL_SOCKET,SO_SNDTIMEO,&to,sizeof(to));

  if(connect(l_sock, res->ai_addr, res->ai_addrlen) != 0) {
    printf("... socket connect failed errno=%d
", errno);
    close(l_sock);
    freeaddrinfo(res);
    return -1;
  }

  printf("... connected
");
  freeaddrinfo(res);

  // All set, socket is configured for sending and receiving
  return l_sock;
}

来自这个论坛https://www.esp32.com/viewtopic.php?t=5965

以上是关于ESP32 TCP客户端的主要内容,如果未能解决你的问题,请参考以下文章

乐鑫Esp32学习之旅⑨ esp32上实现本地 TCP 客户端和服务端角色,可断线重连原路返回数据。(附带Demo)

ESP32 单片机学习笔记 - 07 - TCP连接

ESP32-C3入门教程 网络篇⑤——TCP Socket Client 客户端应用示例

ESP-C3入门9. 创建TCP Server

ESP-C3入门9. 创建TCP Server

MicroPython ESP32 入网和TCP数据发送通讯示例