These are some standard errors generated by the socket layer.
Additional errors may be generated and returned from the
underlying protocol modules; see their manual pages.
EAGAIN
or EWOULDBLOCK
The socket is marked nonblocking and the receive operation
would block, or a receive timeout had been set and the
timeout expired before data was received. POSIX.1 allows
either error to be returned for this case, and does not
require these constants to have the same value, so a
portable application should check for both possibilities.
EBADF
The argument sockfd is an invalid file descriptor.
ECONNREFUSED
A remote host refused to allow the network connection
(typically because it is not running the requested
service).
EFAULT
The receive buffer pointer(s) point outside the process's
address space.
EINTR
The receive was interrupted by delivery of a signal before
any data was available; see signal(7).
EINVAL
Invalid argument passed.
ENOMEM
Could not allocate memory for recvmsg
().
ENOTCONN
The socket is associated with a connection-oriented
protocol and has not been connected (see connect(2) and
accept(2)).
ENOTSOCK
The file descriptor sockfd does not refer to a socket.