esp32 tcpclient 重启
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | xTaskCreate((TaskFunction_t)app_tcp_client, ( const char *) "app_tcp_client" , (uint16_t)TCP_SERVER_TASK_STK_SIZE, ( void *)NULL, (UBaseType_t)TCP_CLIENT_TASK_PRIO, (TaskHandle_t *)&app_tcp_client_task_handle); static void app_tcp_client( void *arg) { char rx_buffer[128]; char host_ip[] = HOST_IP_ADDR; int addr_family = 0; int ip_protocol = 0; while (1) { struct sockaddr_in dest_addr; inet_pton(AF_INET, host_ip, &dest_addr.sin_addr); dest_addr.sin_family = AF_INET; dest_addr.sin_port = htons(CLIENTPORT); addr_family = AF_INET; ip_protocol = IPPROTO_IP; int sock = socket(addr_family, SOCK_STREAM, ip_protocol); if (sock < 0) { ESP_LOGE(TAG, "Unable to create socket: errno %d" , errno ); break ; } ESP_LOGI(TAG, "Socket created, connecting to %s:%d" , host_ip, CLIENTPORT); int err = connect(sock, ( struct sockaddr *)&dest_addr, sizeof (dest_addr)); if (err != 0) { ESP_LOGE(TAG, "Socket unable to connect: errno %d" , errno ); break ; } ESP_LOGI(TAG, "Successfully connected" ); while (1) { int err = send(sock, payload, strlen (payload), 0); if (err < 0) { ESP_LOGE(TAG, "Error occurred during sending: errno %d" , errno ); break ; } int len = recv(sock, rx_buffer, sizeof (rx_buffer) - 1, 0); // Error occurred during receiving if (len < 0) { ESP_LOGE(TAG, "recv failed: errno %d" , errno ); break ; } // Data received else { rx_buffer[len] = 0; // Null-terminate whatever we received and treat like a string ESP_LOGI(TAG, "Received %d bytes from %s:" , len, host_ip); ESP_LOGI(TAG, "%s" , rx_buffer); } } if (sock != -1) { ESP_LOGE(TAG, "Shutting down socket and restarting..." ); shutdown(sock, 0); close(sock); } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-08-31 bitset c++
2020-08-31 vim 多个文件操作
2019-08-31 opensaml
2019-08-31 10年之后,只剩下余生