FreeRTOS_socket()

[FreeRTOS+TCP API Reference]

FreeRTOS_sockets.h
Socket_t FreeRTOS_socket( BaseType_t xDomain, BaseType_t xType, BaseType_t xProtocol );
		

Create a TCP or UDP socket.

See the FreeRTOS+TCP networking tutorial for more information on using both TCP and UDP sockets.

Parameters:

xDomain   Must be set to FREERTOS_AF_INET.

xType   Set to FREERTOS_SOCK_STREAM to create a TCP socket.
Set to FREERTOS_SOCK_DGRAM to create a UDP socket.
No other values are valid.

xProtocol   Set to FREERTOS_IPPROTO_TCP to create a TCP socket.
Set to FREERTOS_IPPROTO_UDP to create a UDP socket.
No other values are valid.

Returns:

If a socket is created successfully, then the socket handle is returned. If there is insufficient FreeRTOS heap memory available for the socket to be created then FREERTOS_INVALID_SOCKET is returned.

Example usage:

The following code snippets show how to create a UDP and TCP socket respectively.

/* FreeRTOS+TCP sockets include. */ #define "FreeRTOS_sockets.h" void aFunction( void ) { /* Variable to hold the created socket. */ Socket_t xSocket; struct freertos_sockaddr xBindAddress; /* Create a UDP socket. */ xSocket = FreeRTOS_socket( FREERTOS_AF_INET, FREERTOS_SOCK_DGRAM, FREERTOS_IPPROTO_UDP ); /* Check the socket was created successfully. */ if( xSocket != FREERTOS_INVALID_SOCKET ) { /* The socket was created successfully and can now be used to send data using the FreeRTOS_sendto() API function. Sending to a socket that has not first been bound will result in the socket being automatically bound to a port number. Use FreeRTOS_bind() to bind the socket to a specific port number. This example binds the socket to port 9999. The port number is specified in network byte order, so FreeRTOS_htons() is used. */ xBindAddress.sin_port = FreeRTOS_htons( 9999 ); if( FreeRTOS_bind( xSocket, &xBindAddress, sizeof( &xBindAddress ) ) == 0 ) { /* The bind was successful. */ } } else { /* There was insufficient FreeRTOS heap memory available for the socket to be created. */ } } Example use of the FreeRTOS_socket() API function to create a UDP socket


/* FreeRTOS+TCP sockets include. */ #define "FreeRTOS_sockets.h" void aFunction( void ) { /* Variable to hold the created socket. */ Socket_t xSocket; struct freertos_sockaddr xBindAddress; /* Create a TCP socket. */ xSocket = FreeRTOS_socket( FREERTOS_AF_INET, FREERTOS_SOCK_STREAM, FREERTOS_IPPROTO_TCP ); /* Check the socket was created successfully. */ if( xSocket != FREERTOS_INVALID_SOCKET ) { /* The socket was created successfully and can now be used to connect to a remote socket using FreeRTOS_connect(), before sending data using FreeRTOS_send(). Alternatively the socket can be bound to a port using FreeRTOS_bind(), before listening for incoming connections using FreeRTOS_listen(). */ } else { /* There was insufficient FreeRTOS heap memory available for the socket to be created. */ } } Example use of the FreeRTOS_socket() API function to create a TCP socket