Content-type: text/html Man page of recvmsg

recvmsg

Section: System Calls (2)
Index Return to Main Contents
 

NAME

recvmsg - Receives a message from a socket using a message structure  

SYNOPSIS

#include <sys/socket.h>

ssize_t recvmsg (        int socket,
       struct msghdr *message,
       int flags) ;

[DIGITAL]  The following definition of the recvmsg() function does not conform to current standards and is supported only for backward compatibility (see standards(5)):

int recvmsg (        int socket,
       struct msghdr *message,
       int flags) ;
 

STANDARDS

Interfaces documented on this reference page conform to industry standards as follows:

recvmsg(): XNS4.0

The recvmsg function also supports POSIX.1g Draft 6.6.

Refer to the standards(5) reference page for more information about industry standards and associated tags.

 

PARAMETERS

Specifies the socket file descriptor. Points to a msghdr structure, containing pointers to both the destination address for the incoming message and to buffers containing ancillary data. The format of the address is determined by the behavior requested for the socket.

[DIGITAL]   If the compile-time option _SOCKADDR_LEN is defined before the <sys/socket.h> header file is included, the msghdr structure takes 4.4BSD behavior. Otherwise, the default 4.3BSD msghdr structure is used. In 4.4BSD, the msghdr structure has a separate msg_flags field for holding flags from the received message. In addition, the msg_accrights field is generalized into a msg_control field. See DESCRIPTION for more information. If _SOCKADDR_LEN is defined, the 4.3BSD msghdr structure is defined with the name omsghdr. Permits the caller of this function to exercise control over the reception of messages. The value for this parameter is formed by a logical OR of one or more of the following values:
Peeks at the incoming message. Processes out-of-band data on sockets that support out-of-band data. Requests that the function block wait until the full amount of data requested can be returned. The function may return a smaller amount of data if a signal is caught, the connection is terminated, or an error is pending for the socket.
 

DESCRIPTION

The recvmsg() function receives messages from unconnected or connected sockets and returns the length of the message. When a message is too long for the buffer, the message may be truncated depending on the type of socket from which the message is written.

When no messages are available at the socket specified by the socket parameter, the recvmsg() function waits for a message to arrive. When the socket is nonblocking and no message is available, the recvmsg() function fails and sets errno to [EWOULDBLOCK].

Use the select() function to determine when more data arrives.

The recvmsg() function uses a msghdr structure to minimize the number of directly supplied parameters. In the msghdr structure, the msg_name and msg_namelen fields specify the destination address if the socket is unconnected. The msg_name field may be given as a null pointer if no names are desired or required. The msg_iov and msg_iovlen fields describe the scatter gather locations.

[POSIX]  In POSIX.1g Draft 6.6 the msghdr structure uses a socklen_t data type for the msg_iovlen field instead of a size_t data type as specified in XNS4.0.

[DIGITAL]   In 4.3BSD, the msg_accrights field is a buffer for passing access rights. In 4.4BSD, the msg_accrights field has been expanded into a msg_control field, to include other protocol control messages or other miscellaneous ancillary data.

In the 4.4BSD msghdr structure, the msg_flags field holds flags from the received message. In addition to MSG_PEEK and MSG_OOB, the incoming flags reported in the msg_flags field can be any of the following values: Data includes the end-of-record marker. Data was truncated before delivery. Control data was truncated before delivery.  

NOTES

[DIGITAL]  When compiled in the X/Open UNIX environment, calls to the recvmsg() function are internally renamed by prepending _E to the function name. When you are debugging a module that includes the recvmsg() function and for which _XOPEN_SOURCE_EXTENDED has been defined, use _Erecvmsg to refer to the recvmsg() call. See standards(5) for further information.

[DIGITAL]  When compiled in the POSIX.1g socket environment, calls to the recvmsg() function are internally renamed by prepending _P to the function name. When you are debugging a module that includes the recvmsg() function and for which _POSIX_PII_SOCKET has been defined, use _Precvmsg to refer to the recvmsg() call. See standards(5) for further information.  

RETURN VALUES

Upon successful completion, the recvmsg() function returns the length of the message in bytes, and fills in the fields of the msghdr structure pointed to by the message parameter as appropriate. Otherwise, a value of -1 is returned and errno is set to indicate the error.  

ERRORS

If the recvmsg() function fails, errno may be set to one of the following values: The socket parameter is not valid. A connection was forcibly closed by a peer. The message parameter is not in a readable or writable part of user address-space. This function was interrupted by a signal before any data was available. The MSG-OOB flag is set and no out-of-band data is available. A receive is attempted on a connection-oriented socket that is not connected. The socket parameter refers to a file, not a socket. The specified flags are not supported this socket type. The connection timed out during connection establishment, or due to a transmission timeout on active connection. The socket is marked nonblocking and no data is ready to be received.  

RELATED INFORMATION

Functions: recv(2), recvfrom(2), send(2), sendmsg(2), sendto(2), select(2), shutdown(2), socket(2)

Standards: standards(5) delim off


 

Index

NAME
SYNOPSIS
STANDARDS
PARAMETERS
DESCRIPTION
NOTES
RETURN VALUES
ERRORS
RELATED INFORMATION

This document was created by man2html, using the manual pages.
Time: 02:40:13 GMT, October 02, 2010