Annotation of 43BSDTahoe/man/man2/recv.2, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1983 Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"    @(#)recv.2      6.5 (Berkeley) 7/21/87
                      6: .\"
                      7: .TH RECV 2 "July 21, 1987"
                      8: .UC 5
                      9: .SH NAME
                     10: recv, recvfrom, recvmsg \- receive a message from a socket
                     11: .SH SYNOPSIS
                     12: .nf
                     13: .ft B
                     14: #include <sys/types.h>
                     15: #include <sys/socket.h>
                     16: .PP
                     17: .ft B
                     18: cc = recv(s, buf, len, flags)
                     19: int cc, s;
                     20: char *buf;
                     21: int len, flags;
                     22: .PP
                     23: .ft B
                     24: cc = recvfrom(s, buf, len, flags, from, fromlen)
                     25: int cc, s;
                     26: char *buf;
                     27: int len, flags;
                     28: struct sockaddr *from;
                     29: int *fromlen;
                     30: .PP
                     31: .ft B
                     32: cc = recvmsg(s, msg, flags)
                     33: int cc, s;
                     34: struct msghdr *msg;
                     35: int flags;
                     36: .ft R
                     37: .SH DESCRIPTION
                     38: .IR Recv ,
                     39: .IR recvfrom ,
                     40: and
                     41: .IR recvmsg
                     42: are used to receive messages from a socket.
                     43: .PP
                     44: The 
                     45: .I recv
                     46: call is normally used only on a 
                     47: .I connected
                     48: socket (see
                     49: .IR connect (2)),
                     50: while 
                     51: .I recvfrom
                     52: and 
                     53: .I recvmsg
                     54: may be used to receive data on a socket whether
                     55: it is in a connected state or not.
                     56: .PP
                     57: If
                     58: .I from
                     59: is non-zero, the source address of the message is filled in.
                     60: .I Fromlen
                     61: is a value-result parameter, initialized to the size of
                     62: the buffer associated with
                     63: .IR from ,
                     64: and modified on return to indicate the actual size of the
                     65: address stored there.
                     66: The length of the message is returned in
                     67: .IR cc .
                     68: If a message is too long to fit in the supplied buffer,
                     69: excess bytes may be discarded depending on the type of socket
                     70: the message is received from (see
                     71: .IR socket (2)).
                     72: .PP
                     73: If no messages are available at the socket, the
                     74: receive call waits for a message to arrive, unless
                     75: the socket is nonblocking (see
                     76: .IR ioctl (2))
                     77: in which case a
                     78: .I cc
                     79: of \-1 is returned with the external variable errno
                     80: set to EWOULDBLOCK.
                     81: .PP
                     82: The
                     83: .IR select (2)
                     84: call may be used to determine when more data arrives.
                     85: .PP
                     86: The
                     87: .I flags
                     88: argument to a recv call is formed by 
                     89: .IR or 'ing
                     90: one or more of the values,
                     91: .PP
                     92: .nf
                     93: .RS
                     94: .ta \w'#define\ \ 'u +\w'MSG_DONTROUTE\ \ \ 'u +\w'0x\0\0\0\ \ 'u
                     95: #define        MSG_OOB 0x1     /* process out-of-band data */
                     96: #define        MSG_PEEK        0x2     /* peek at incoming message */
                     97: .RE
                     98: .fi
                     99: .PP
                    100: The
                    101: .I recvmsg
                    102: call uses a 
                    103: .I msghdr
                    104: structure to minimize the number of directly supplied parameters.
                    105: This structure has the following form, as defined in
                    106: .IR <sys/socket.h> :
                    107: .PP
                    108: .nf
                    109: .RS
                    110: .DT
                    111: struct msghdr {
                    112:        caddr_t msg_name;               /* optional address */
                    113:        int     msg_namelen;            /* size of address */
                    114:        struct  iovec *msg_iov;         /* scatter/gather array */
                    115:        int     msg_iovlen;             /* # elements in msg_iov */
                    116:        caddr_t msg_accrights;          /* access rights sent/received */
                    117:        int     msg_accrightslen;
                    118: };
                    119: .RE
                    120: .fi
                    121: .PP
                    122: Here
                    123: .I msg_name
                    124: and
                    125: .I msg_namelen
                    126: specify the destination address if the socket is unconnected;
                    127: .I msg_name
                    128: may be given as a null pointer if no names are desired or required.
                    129: The 
                    130: .I msg_iov
                    131: and
                    132: .I msg_iovlen
                    133: describe the scatter gather locations, as described in
                    134: .IR read (2).
                    135: A buffer to receive any access rights sent along with the message is specified
                    136: in 
                    137: .IR msg_accrights ,
                    138: which has length
                    139: .IR msg_accrightslen .
                    140: Access rights are currently limited to file descriptors,
                    141: which each occupy the size of an
                    142: .BR int .
                    143: If access rights are not being transferred, the 
                    144: .I msg_accrights
                    145: field should be set to NULL.
                    146: .SH "RETURN VALUE
                    147: These calls return the number of bytes received, or \-1
                    148: if an error occurred.
                    149: .SH ERRORS
                    150: The calls fail if:
                    151: .TP 20
                    152: [EBADF]
                    153: The argument \fIs\fP is an invalid descriptor.
                    154: .TP 20
                    155: [ENOTSOCK]
                    156: The argument \fIs\fP is not a socket.
                    157: .TP 20
                    158: [EWOULDBLOCK]
                    159: The socket is marked non-blocking and the receive operation
                    160: would block.
                    161: .TP 20
                    162: [EINTR]
                    163: The receive was interrupted by delivery of a signal before
                    164: any data was available for the receive.
                    165: .TP 20
                    166: [EFAULT]
                    167: The data was specified to be received into a non-existent
                    168: or protected part of the process address space.
                    169: .SH SEE ALSO
                    170: fcntl(2), read(2), send(2), select(2), getsockopt(2), socket(2)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.