代码之家  ›  专栏  ›  技术社区  ›  Tadas

ESP32 TCP客户端

  •  0
  • Tadas  · 技术社区  · 7 年前

    我想在windows上设置TCP服务器,在ESP32上设置TCP客户端。主要的想法是将字符串发送到ESP32,对其进行更改并将其发送回服务器,但我对所有这些东西都很陌生,并且在ESP32上设置TCP客户端时遇到了困难。示例或参考资料将非常有用。

    2 回复  |  直到 7 年前
        1
  •  0
  •   gladis    6 年前
    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\n", 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\n", inet_ntoa(*addr));
    
      l_sock = socket(res->ai_family, res->ai_socktype, 0);
      if(l_sock < 0) {
        printf("... Failed to allocate socket.\n");
        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\n", errno);
        close(l_sock);
        freeaddrinfo(res);
        return -1;
      }
    
      printf("... connected\n");
      freeaddrinfo(res);
    
      // All set, socket is configured for sending and receiving
      return l_sock;
    }
    

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

        2
  •  0
  •   Paul-Marie    7 年前

    您如何与ESP沟通?如果您通过UART进行通信,只需在UART端口上写下所需的命令即可发送给他:

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

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

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