FreeRTOS+TCP. Creating new socket after FreeRTOS_closesocket()

yanvasilij wrote on Thursday, June 29, 2017:


Does I understed correct after FreeRTOS_closesocket() (for example when connection is lost) I must to create new socket with FreeRTOS_socket() to reopen connection, and I must not to use old socket value. Does this kind of socket creation uses dinamic memory allocation even I need only one open socket? Does it could couse memory fragmentation if I use heap_1?


rtel wrote on Thursday, June 29, 2017:

Once a socket is closed it cannot be used again. If you want another
socket then you need to create it again.

The socket is allocated using a call to pvPortMallocSocket(). By
default that will call pvPortMalloc(), but you can re-define the
behaviour by #defining pvPortMallocSocket() in FreeRTOSIPConfig.h to do
whatever you want it to do. Fro example:

#define pvPortMallocSocket( x ) MyStaticAllocator( x )

(where MyStaticAllocator() would be something you provided).

heap_1 cannot free memory, so don’t use that. Heap_4 will guard against
memory fragmentation as much as it can.

yanvasilij wrote on Friday, June 30, 2017:

Thank you a lot for explanation! It helped.