[ Bottom of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]
Technical Reference: Communications, Volume 2
recv Subroutine
Purpose
Receives messages from connected sockets.
Library
Standard C Library (libc.a)
Syntax
#include <sys/socket.h>
int recv (Socket,
Buffer, Length, Flags)
int Socket;
void * Buffer;
size_t Length;
int Flags;
Description
The recv subroutine receives
messages from a connected socket. The recvfrom and recvmsg
subroutines receive messages from both connected and unconnected sockets.
However, they are usually used for unconnected sockets only.
The recv subroutine returns
the length of the message. If a message is too long to fit in the supplied
buffer, excess bytes may be truncated depending on the type of socket that issued the message.
If no messages are available at the socket, the recv subroutine waits for a message to arrive, unless the
socket is nonblocking. If a socket is nonblocking, the system returns an error.
Use the select subroutine to determine when more data arrives.
The socket applications can be compiled with COMPAT_43 defined. This will make the sockaddr structure BSD 4.3 compatible. For more details refer to socket.h.
Parameters
Socket |
Specifies the socket descriptor. |
Buffer |
Specifies an address where the message should be placed. |
Length |
Specifies the size of the Buffer parameter. |
Flags |
Points to a value controlling the message reception. The /usr/include/sys/socket.h file defines the Flags
parameter. The argument to receive a call is formed by logically ORing one
or more of the following values:
- MSG_OOB
- Processes out-of-band data. The significance of out-of-band data is
protocol-dependent.
- MSG_PEEK
- Peeks at incoming data. The data continues to be treated as unread
and will be read by the next call to recv() or a similar
function.
- MSG_WAITALL
- Requests that the function not return until the requested number of
bytes have been read. The function can return fewer than the requested number
of bytes only if a signal is caught, the connection is terminated, or an
error is pending for the socket.
|
Return Values
Upon successful completion, the recv subroutine returns the length of the message in bytes.
If the recv subroutine is unsuccessful,
the subroutine handler performs the following functions:
- Returns a value of -1 to the calling program.
- Returns a 0 if the connection disconnects.
- Moves an error code, indicating the specific error,
into the errno global variable.
Error Codes
The recv subroutine is unsuccessful
if any of the following errors occurs:
Error |
Description |
EBADF |
The Socket parameter is not valid. |
ENOTSOCK |
The Socket parameter refers to a file, not
a socket. |
EWOULDBLOCK |
The socket is marked nonblocking, and no connections are present
to be accepted. |
EINTR |
A signal interrupted the recv subroutine before
any data was available. |
EFAULT |
The data was directed to be received into a nonexistent or protected
part of the process address space. The Buffer parameter
is not valid. |
Related Information
The fgets subroutine, fputs
subroutine, read subroutine, recvfrom subroutine, recvmsg subroutine, select subroutine, send subroutine, sendmsg
subroutine, sendto subroutine, shutdown subroutine, socket subroutine, write subroutine.
Sockets Overview and Understanding Socket Data Transfer in AIX 5L Version 5.2 Communications Programming Concepts.
[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]