Sockets
Library Functions
recv(3SOCKET)
NAME
recv, recvfrom, recvmsg - receive a
message from a socket
SYNOPSIS
cc [ flag ... ] file ... -lsocket -lnsl [ library ... ]
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
ssize recv(int s, void *buf,
size len, int flags);
ssize recvfrom(int s, void *buf, size len,
int flags,
struct sockaddr *from, int *fromlen);
ssize recvmsg(int s, struct msghdr
*msg, int flags);
DESCRIPTION
recv(), recvfrom(), and recvmsg() are used to receive
mes-
sages from another
socket. recv() may be used only on a con-
nected socket (see connect(3SOCKET)), while recvfrom()
and
recvmsg() may be
used to receive data on a socket whether it
is in a connected state or not. s is a socket created
with
socket(3SOCKET).
If from is not a NULL pointer, the
source address of
the
message is
filled in. fromlen is a value-result parameter,
initialized to the size of the buffer
associated with from,
and
modified on return to indicate the actual size of
the
address stored there. The
length of the message is returned.
If a message is too
long to fit in the supplied buffer,
excess bytes may be
discarded depending on
the type of
socket the message is received from (see socket(3SOCKET)).
If no messages are available at the
socket, the receive call
waits for a
message to arrive, unless the
socket is non-
blocking (see
fcntl(2)) in which case -1 is returned
with
the external
variable errno set to EWOULDBLOCK.
The select() call may be used to determine when
more data
arrives.
The flags parameter is formed by
ORing one or more of
the
following:
MSGOB
Read any "out-of-band" data
present on the
socket
rather
than the regular "in-band" data.
MSGEEK
"Peek" at the data present on the socket; the
data is
returned,
but not consumed,
so that a subsequent
receive operation will see the same data.
SunOS
5.8 Last change: 8 Nov 1999 1
Sockets
Library Functions
recv(3SOCKET)
The recvmsg() call uses a msghdr structure to minimize
the
number of
directly supplied parameters.
This structure is
defined in
<sys/socket.h> and includes
the following
members:
caddr msgame;
/* optional address */
int msgamelen; /* size of address */
struct iovec *msgov;
/* scatter/gather array */
int msgovlen; /* # elements in msgov */
caddr msgccrights;
/* access rights sent/received */
int msgccrightslen;
Here msgame and msgamelen
specify the destination
address if the socket is unconnected; msgame may
be
given as a NULL
pointer if no names are desired
or
required. The msgov and msgovlen describe
the
scatter-gather
locations, as described in
read(2). A
buffer to receive any access rights sent along with the
message is specified in msgccrights,
which has length
msgccrightslen.
RETURN
VALUES
These calls return the
number of bytes received, or -1 if an
error occurred.
ERRORS
The calls fail if:
EBADF s is an invalid file descriptor.
EINTR The operation was interrupted by
delivery of a signal
before any data was available to be
received.
EIO An I/O error occurred while reading from or
writing to
the file
system.
ENOMEM
There was insufficient user memory
available for the
operation to complete.
ENOSR There were insufficient
STREAMS resources available
for the operation to complete.
ENOTSOCK
s is not a socket.
ESTALE
A stale NFS file handle exists.
EWOULDBLOCK
SunOS 5.8 Last change: 8 Nov 1999 2
Sockets
Library Functions
recv(3SOCKET)
The socket is marked non-blocking and
the requested
operation would block.
ATTRIBUTES
See attributes(5) for descriptions of
the following attri-
butes:
|
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|||
|
MT-Level | Safe |
|||
SEE
ALSO
fcntl(2), ioctl(2), read(2),
connect(3SOCKET),
getsockopt(3SOCKET),
send(3SOCKET), socket(3SOCKET), attri-
butes(5), socket(3HEAD)
SunOS
5.8 Last change: 8 Nov 1999 3