Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


recvmsg(3p) — Linux manual page

PROLOG |NAME |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |EXAMPLES |APPLICATION USAGE |RATIONALE |FUTURE DIRECTIONS |SEE ALSO |COPYRIGHT

RECVMSG(3P)             POSIX Programmer's ManualRECVMSG(3P)

PROLOG        top

       This manual page is part of the POSIX Programmer's Manual.  The       Linux implementation of this interface may differ (consult the       corresponding Linux manual page for details of Linux behavior), or       the interface may not be implemented on Linux.

NAME        top

       recvmsg — receive a message from a socket

SYNOPSIS        top

       #include <sys/socket.h>       ssize_t recvmsg(intsocket, struct msghdr *message, intflags);

DESCRIPTION        top

       Therecvmsg() function shall receive a message from a connection-       mode or connectionless-mode socket. It is normally used with       connectionless-mode sockets because it permits the application to       retrieve the source address of received data.       Therecvmsg() function takes the following arguments:socket      Specifies the socket file descriptor.message     Points to amsghdrstructure, containing both the                   buffer to store the source address and the buffers for                   the incoming message. The length and format of the                   address depend on the address family of the socket.                   Themsg_flags member is ignored on input, but may                   contain meaningful values on output.flags       Specifies the type of message reception. Values of                   this argument are formed by logically OR'ing zero or                   more of the following values:                   MSG_OOB     Requests out-of-band data. The                               significance and semantics of out-of-band                               data are protocol-specific.                   MSG_PEEK    Peeks at the incoming message.                   MSG_WAITALL On SOCK_STREAM sockets this requests that                               the function block until the full amount                               of data can be returned. The function may                               return the smaller amount of data if the                               socket is a message-based socket, if a                               signal is caught, if the connection is                               terminated, if MSG_PEEK was specified, or                               if an error is pending for the socket.       Therecvmsg() function shall receive messages from unconnected or       connected sockets and shall return the length of the message.       Therecvmsg() function shall return the total length of the       message. For message-based sockets, such as SOCK_DGRAM and       SOCK_SEQPACKET, the entire message shall be read in a single       operation. If a message is too long to fit in the supplied       buffers, and MSG_PEEK is not set in theflags argument, the excess       bytes shall be discarded, and MSG_TRUNC shall be set in themsg_flags member of themsghdrstructure. For stream-based       sockets, such as SOCK_STREAM, message boundaries shall be ignored.       In this case, data shall be returned to the user as soon as it       becomes available, and no data shall be discarded.       If the MSG_WAITALL flag is not set, data shall be returned only up       to the end of the first message.       If no messages are available at the socket and O_NONBLOCK is not       set on the socket's file descriptor,recvmsg() shall block until a       message arrives. If no messages are available at the socket and       O_NONBLOCK is set on the socket's file descriptor, therecvmsg()       function shall fail and seterrno to[EAGAIN]or[EWOULDBLOCK].       In themsghdrstructure, themsg_name member may be a null pointer       if the source address is not required.  Otherwise, if the socket       is unconnected, themsg_name member points to asockaddrstructure       in which the source address is to be stored, and themsg_namelen       member on input specifies the length of the suppliedsockaddr       structure and on output specifies the length of the stored       address.  If the actual length of the address is greater than the       length of the suppliedsockaddrstructure, the stored address       shall be truncated. If the socket is connected, themsg_name andmsg_namelen members shall be ignored. Themsg_iov andmsg_iovlen       fields are used to specify where the received data shall be       stored.  Themsg_iov member points to an array ofiovec       structures; themsg_iovlen member shall be set to the dimension of       this array. In eachiovecstructure, theiov_base field specifies       a storage area and theiov_len field gives its size in bytes. Each       storage area indicated bymsg_iov is filled with received data in       turn until all of the received data is stored or all of the areas       have been filled.       Upon successful completion, themsg_flags member of the message       header shall be the bitwise-inclusive OR of all of the following       flags that indicate conditions detected for the received message:       MSG_EOR     End-of-record was received (if supported by the                   protocol).       MSG_OOB     Out-of-band data was received.       MSG_TRUNC   Normal data was truncated.       MSG_CTRUNC  Control data was truncated.

RETURN VALUE        top

       Upon successful completion,recvmsg() shall return the length of       the message in bytes. If no messages are available to be received       and the peer has performed an orderly shutdown,recvmsg() shall       return 0. Otherwise, -1 shall be returned anderrno set to       indicate the error.

ERRORS        top

       Therecvmsg() function shall fail if:EAGAINorEWOULDBLOCK              The socket's file descriptor is marked O_NONBLOCK and no              data is waiting to be received; or MSG_OOB is set and no              out-of-band data is available and either the socket's file              descriptor is marked O_NONBLOCK or the socket does not              support blocking to await out-of-band data.EBADFThesocket argument is not a valid open file descriptor.ECONNRESET              A connection was forcibly closed by a peer.EINTRThis function was interrupted by a signal before any data              was available.EINVALThe sum of theiov_len values overflows assize_t, or the              MSG_OOB flag is set and no out-of-band data is available.EMSGSIZE              Themsg_iovlen member of themsghdrstructure pointed to bymessage is less than or equal to 0, or is greater than              {IOV_MAX}.ENOTCONN              A receive is attempted on a connection-mode socket that is              not connected.ENOTSOCK              Thesocket argument does not refer to a socket.EOPNOTSUPP              The specified flags are not supported for this socket type.ETIMEDOUT              The connection timed out during connection establishment,              or due to a transmission timeout on active connection.       Therecvmsg() function may fail if:EIOAn I/O error occurred while reading from or writing to the              file system.ENOBUFS              Insufficient resources were available in the system to              perform the operation.ENOMEMInsufficient memory was available to fulfill the request.The following sections are informative.

EXAMPLES        top

       None.

APPLICATION USAGE        top

       Theselect() andpoll() functions can be used to determine when       data is available to be received.

RATIONALE        top

       None.

FUTURE DIRECTIONS        top

       None.

SEE ALSO        top

poll(3p),pselect(3p),recv(3p),recvfrom(3p),send(3p),sendmsg(3p),sendto(3p),shutdown(3p),socket(3p)       The Base Definitions volume of POSIX.1‐2017,sys_socket.h(0p)

COPYRIGHT        top

       Portions of this text are reprinted and reproduced in electronic       form from IEEE Std 1003.1-2017, Standard for Information       Technology -- Portable Operating System Interface (POSIX), The       Open Group Base Specifications Issue 7, 2018 Edition, Copyright       (C) 2018 by the Institute of Electrical and Electronics Engineers,       Inc and The Open Group.  In the event of any discrepancy between       this version and the original IEEE and The Open Group Standard,       the original IEEE and The Open Group Standard is the referee       document. The original Standard can be obtained online athttp://www.opengroup.org/unix/online.html .       Any typographical or formatting errors that appear in this page       are most likely to have been introduced during the conversion of       the source files to man page format. To report such errors, seehttps://www.kernel.org/doc/man-pages/reporting_bugs.html .IEEE/The Open Group                2017RECVMSG(3P)

Pages that refer to this page:sys_socket.h(0p)pselect(3p)recv(3p)recvfrom(3p)send(3p)sendmsg(3p)sendto(3p)shutdown(3p)sockatmark(3p)socket(3p)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp