Из Espressif sdk проект esp_iot_rtos_sdk непонятки, после 3 - 4 попыток подключится к серверу выдает 'socket fail', может кто-то сталкивался с подобной проблемой ? собственно сам кусок кода:
Код:
void task2(void *pvParameters)
{
printf("Hello, welcome to client!\r\n");
while (1) {
int recbytes;
int sin_size;
int str_len;
int sta_socket;
struct sockaddr_in local_ip;
struct sockaddr_in remote_ip;
sta_socket = socket(PF_INET, SOCK_STREAM, 0);
if (-1 == sta_socket) {
close(sta_socket);
printf("C > socket fail!\n");
continue;
}
printf("C > socket ok!\n");
bzero(&remote_ip, sizeof(struct sockaddr_in));
remote_ip.sin_family = AF_INET;
remote_ip.sin_addr.s_addr = inet_addr(server_ip);
remote_ip.sin_port = htons(server_port);
if (0 != connect(sta_socket, (struct sockaddr *)(&remote_ip), sizeof(struct sockaddr))) {
close(sta_socket);
printf("C > connect fail!\n");
vTaskDelay(4000 / portTICK_RATE_MS);
continue;
}
printf("C > connect ok!\n");
char *pbuf = (char *)zalloc(1024);
sprintf(pbuf, "%s\n", "client_send info");
if (write(sta_socket, pbuf, strlen(pbuf) + 1) < 0) {
printf("C > send fail\n");
}
printf("C > send success\n");
free(pbuf);
char *recv_buf = (char *)zalloc(128);
while ((recbytes = read(sta_socket , recv_buf, 128)) > 0) {
recv_buf[recbytes] = 0;
printf("C > read data success %d!\nC > %s\n", recbytes, recv_buf);
}
free(recv_buf);
if (recbytes <= 0) {
printf("C > read data fail!\n");
}
}
}