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.