Copy up to a specified number of bytes received from a remote socket into an application memory buffer.
Files
net_sock.h/net_sock.c
net_bsd.h/net_bsd.c
Prototypes
Code Block |
---|
NET_SOCK_RTN_CODE NetSock_RxData (NET_SOCK_ID sock_id,
void *p_data_buf,
CPU_INT16U data_buf_len,
CPU_INT16S flags,
NET_ERR *p_err);
NET_SOCK_RTN_CODE NetSock_RxDataFrom(NET_SOCK_ID sock_id,
void *p_data_buf,
CPU_INT16U data_buf_len,
CPU_INT16S flags,
NET_SOCK_ADDR *p_addr_remote,
NET_SOCK_ADDR_LEN *p_addr_len,
void *p_ip_opts_buf,
CPU_INT08U ip_opts_buf_len,
CPU_INT08U *p_ip_opts_len,
NET_ERR *p_err);
ssize_t recv (int sock_id,
void *p_data_buf,
_size_t data_buf_len,
int flags);
ssize_t recvfrom ( int sock_id,
void *p_data_buf,
_size_t data_buf_len,
int flags,
struct sockaddr *p_addr_remote,
socklen_t *p_addr_len); |
Arguments
sock_id
This is the socket ID returned by NetSock_Open()/socket()
when the socket was created or by NetSock_Accept()/accept()
when a connection was accepted.
...
NET_SOCK_ERR_NONE
NET_ERR_FAULT_NULL_PTR
NET_SOCK_ERR_NULL_SIZE
NET_SOCK_ERR_NOT_USED
NET_SOCK_ERR_CLOSED
NET_SOCK_ERR_INVALID_SOCK
NET_SOCK_ERR_INVALID_FAMILY
NET_SOCK_ERR_INVALID_PROTOCOL
NET_SOCK_ERR_INVALID_TYPE
NET_SOCK_ERR_INVALID_STATE
NET_SOCK_ERR_INVALID_OP
NET_SOCK_ERR_INVALID_FLAG
NET_SOCK_ERR_INVALID_ADDR_LEN
NET_SOCK_ERR_INVALID_DATA_SIZE
NET_SOCK_ERR_CONN_FAIL
NET_SOCK_ERR_FAULT
NET_SOCK_ERR_RX_Q_EMPTY
NET_SOCK_ERR_RX_Q_CLOSED
NET_ERR_RX
NET_CONN_ERR_NOT_USED
NET_CONN_ERR_INVALID_CONN
NET_CONN_ERR_INVALID_ADDR_LEN
NET_CONN_ERR_ADDR_NOT_USED
NET_INIT_ERR_NOT_COMPLETED
NET_ERR_FAULT_LOCK_ACQUIRE
Returned Value
Positive number of bytes received, if successful;
...
NET_SOCK_BSD_ERR_RX/-1
, otherwise.
Blocking vs Non-Blocking
The default setting for µC/TCP-IP is blocking. However, this setting can be changed at compile time by setting the NET_SOCK_DFLT_NO_BLOCK_EN
to DEF_ENABLED
or DEF_DISABLED
. (see netsee net_cfg.h file).
DEF_DISABLED
sets the blocking mode to blocking. This means that a socket receive function will wait forever, until at least one byte of data is available to return or the socket connection is closed, unless a timeout is specified by NetSock_CfgTimeoutRxQ_Set()
[See function NetSock_CfgTimeoutRxQ_Set()].
...
The current version of µC/TCP-IP selects blocking or non-blocking at compile time for all sockets. A future version may allow the selection of blocking or non-blocking at the individual socket level. However, each socket receive call can pass the NET_SOCK_FLAG_RX_NO_BLOCK/MSG_DONTWAIT
flag to disable blocking on that call.
Required Configuration
None.
Notes / Warnings
TCP sockets typically use NetSock_RxData()/recv()
, whereas UDP sockets typically use NetSock_RxDataFrom()/recvfrom()
.
...