Code:
int ICACHE_FLASH_ATTR mqtt_esp_read(int my_socket, unsigned char* buffer, int len, int timeout_ms)
{
struct timeval tv;
fd_set fdset;
int rc = 0;
int rcvd = 0;
FD_ZERO(&fdset);
FD_SET(my_socket, &fdset);
// It seems esp_iot_rtos_sdk interprets timeout by FreeRTOS ticks.
tv.tv_sec = timeout_ms / portTICK_RATE_MS;
tv.tv_usec = 0;
rc = select(my_socket + 1, &fdset, 0, 0, &tv);
if ((rc > 0) && (FD_ISSET(my_socket, &fdset)))
{
rcvd = recv(my_socket, buffer, len, 0);
}
else
{
// select fail
return -1;
}
return rcvd;
}
Statistics: Posted by tobewinner — Wed Jun 22, 2016 2:56 pm
Code:
int ICACHE_FLASH_ATTR mqtt_esp_read(int my_socket, unsigned char* buffer, int len, int timeout_ms)
{
struct timeval tv;
fd_set fdset;
int rc = 0;
int rcvd = 0;
FD_ZERO(&fdset);
FD_SET(my_socket, &fdset);
// It seems esp_iot_rtos_sdk interprets timeout by FreeRTOS ticks.
tv.tv_sec = timeout_ms / portTICK_RATE_MS;
tv.tv_usec = 0;
rc = select(my_socket + 1, &fdset, 0, 0, &tv);
if ((rc > 0) && (FD_ISSET(my_socket, &fdset)))
{
rcvd = recv(my_socket, buffer, len, 0);
}
else
{
// select fail
return -1;
}
return rcvd;
}
Statistics: Posted by baoshi — Tue Jun 30, 2015 12:17 am
Code:
int ICACHE_FLASH_ATTR mqtt_esp_read(int my_socket, unsigned char* buffer, int len, int timeout_ms)
{
struct timeval tv;
fd_set fdset;
int rc = 0;
int rcvd = 0;
FD_ZERO(&fdset);
FD_SET(my_socket, &fdset);
tv.tv_sec = 0;
tv.tv_usec = timeout_ms * 1000;
rc = select(my_socket + 1, &fdset, 0, 0, &tv);
if ((rc > 0) && (FD_ISSET(my_socket, &fdset)))
{
rcvd = recv(my_socket, buffer, len, 0);
}
else
{
// select fail
return -1;
}
return rcvd;
}
Code:
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)
Statistics: Posted by baoshi — Tue Jun 30, 2015 12:00 am