Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
RECV(3P)		   POSIX Programmer's Manual		      RECV(3P)

PROLOG
       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
       recv - receive a	message	from a connected socket

SYNOPSIS
       #include	<sys/socket.h>

       ssize_t recv(int	socket,	void *buffer, size_t length, int flags);

DESCRIPTION
       The recv() function shall receive a message from	a  connection-mode  or
       connectionless-mode  socket. It is normally used	with connected sockets
       because it does not permit  the	application  to	 retrieve  the	source
       address of received data.

       The recv() function takes the following arguments:

       socket Specifies	the socket file	descriptor.

       buffer Points to	a buffer where the message should be stored.

       length Specifies	 the  length  in bytes of the buffer pointed to	by the
	      buffer argument.

       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_PEEK
	      Peeks at an incoming message. The	data is	treated	as unread  and
	      the  next	 recv()	 or  similar  function shall still return this
	      data.

       MSG_OOB
	      Requests out-of-band data. The  significance  and	 semantics  of
	      out-of-band data are protocol-specific.

       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	termi-
	      nated,  if MSG_PEEK was specified, or if an error	is pending for
	      the socket.

       The recv() function shall return	the length of the message  written  to
       the  buffer  pointed to by the buffer argument. For message-based sock-
       ets, 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	buffer,	and MSG_PEEK is	not set	in  the	 flags	argument,  the
       excess  bytes  shall  be	 discarded.  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,  recv()  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, recv() shall fail and set errno to
       [EAGAIN]	or [EWOULDBLOCK].

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

ERRORS
       The recv() function shall fail if:

       EAGAIN or EWOULDBLOCK

	      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.

       EBADF  The socket argument is not a valid file descriptor.

       ECONNRESET
	      A	connection was forcibly	closed by a peer.

       EINTR  The recv() function was interrupted by a signal that was caught,
	      before any data was available.

       EINVAL The MSG_OOB flag is set and no out-of-band data is available.

       ENOTCONN
	      A	 receive  is attempted on a connection-mode socket that	is not
	      connected.

       ENOTSOCK
	      The socket argument does not refer to a socket.

       EOPNOTSUPP
	      The specified flags are not supported for	this  socket  type  or
	      protocol.

       ETIMEDOUT
	      The connection timed out during connection establishment,	or due
	      to a transmission	timeout	on active connection.

       The recv() function may fail if:

       EIO    An 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.

       ENOMEM Insufficient memory was available	to fulfill the request.

       The following sections are informative.

EXAMPLES
       None.

APPLICATION USAGE
       The recv() function is equivalent to recvfrom() with a zero address_len
       argument, and to	read() if no flags are used.

       The select() and	poll() functions can be	used to	determine when data is
       available to be received.

RATIONALE
       None.

FUTURE DIRECTIONS
       None.

SEE ALSO
       poll(), read(), recvmsg(),  recvfrom(),	select(),  send(),  sendmsg(),
       sendto(), shutdown(), socket(), write(),	the Base Definitions volume of
       IEEE Std	1003.1-2001, _sys/socket.h_

COPYRIGHT
       Portions	of this	text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for	Information Technology
       -- Portable Operating System Interface (POSIX),	The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 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
       at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group		     2003			      RECV(3P)

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

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=recv&sektion=3&manpath=SuSE+Linux%2fi386+11.3>

home | help