*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Linux man pages -> send (2)              



NAME    [Toc]    [Back]

       send, sendto, sendmsg - send a message from a socket

SYNOPSIS    [Toc]    [Back]

       #include <sys/types.h>
       #include <sys/socket.h>

       int send(int s, const void *msg, size_t len, int flags);
       int  sendto(int s, const void *msg, size_t len, int flags, const struct
       sockaddr *to, socklen_t tolen);
       int sendmsg(int s, const struct msghdr *msg, int flags);

DESCRIPTION    [Toc]    [Back]

       Send, sendto, and sendmsg are used to transmit  a  message  to  another
       socket.	Send may be used only when the socket is in a connected state,
       while sendto and sendmsg may be used at any time.

       The address of the target is given by  to  with	tolen  specifying  its
       size.   The  length  of the message is given by len.  If the message is
       too long to pass atomically through the underlying protocol, the  error
       EMSGSIZE is returned, and the message is not transmitted.

       No  indication  of  failure  to deliver is implicit in a send.  Locally
       detected errors are indicated by a return value of -1.

       When the message does not fit into the send buffer of the socket,  send
       normally  blocks, unless the socket has been placed in non-blocking I/O
       mode.  In non-blocking mode it would return EAGAIN in this  case.   The
       select(2)  call	may  be  used to determine when it is possible to send
       more data.

       The flags parameter is a flagword and can contain the following flags:

       MSG_OOB    [Toc]    [Back]
	      Sends out-of-band data on sockets that support this notion (e.g.
	      SOCK_STREAM);  the underlying protocol must also support out-of-
	      band data.

       MSG_DONTROUTE    [Toc]    [Back]
	      Dont't use a gateway to send out the packet, only send to  hosts
	      on  directly  connected  networks.  This is usually used only by
	      diagnostic or routing programs. This is only defined for	protocol
 families that route; packet sockets don't.

       MSG_DONTWAIT    [Toc]    [Back]
	      Enables  non-blocking  operation;  if the operation would block,
	      EAGAIN is returned (this can also be enabled  using  the	O_NON-
	      BLOCK with the F_SETFL fcntl(2)).

       MSG_NOSIGNAL    [Toc]    [Back]
	      Requests	not to send SIGPIPE on errors on stream oriented sockets
 when the other end breaks the connection. The EPIPE error is
	      still returned.

       MSG_CONFIRM (Linux 2.3+ only)
	      Tell  the  link  layer  that forward process happened: you got a
	      successful reply from the other side. If the link layer  doesn't
	      get  this it'll regularly reprobe the neighbour (e.g. via a unicast
 ARP).  Only valid on SOCK_DGRAM and	SOCK_RAW  sockets  and
	      currently  only  implemented  for  IPv4 and IPv6. See arp(7) for

       The definition of the msghdr structure follows. See recv(2)  and  below
       for an exact description of its fields.

	      struct msghdr {
		  void	       * msg_name;     /* optional address */
		  socklen_t    msg_namelen;    /* size of address */
		  struct iovec * msg_iov;      /* scatter/gather array */
		  size_t       msg_iovlen;     /* # elements in msg_iov */
		  void	       * msg_control;  /* ancillary data, see below */
		  socklen_t    msg_controllen; /* ancillary data buffer len */
		  int	       msg_flags;      /* flags on received message */

       You  may  send  control	information using the msg_control and msg_con-
       trollen members. The maximum  control  buffer  length  the  kernel  can
       process	is  limited  per socket by the net.core.optmem_max sysctl; see

RETURN VALUE    [Toc]    [Back]

       The calls return the number of characters  sent,  or  -1  if  an  error

ERRORS    [Toc]    [Back]

       These  are  some  standard  errors generated by the socket layer. Additional
 errors may be generated and returned from the underlying	protocol
 modules; see their respective manual pages.

       EBADF  An invalid descriptor was specified.

       ENOTSOCK    [Toc]    [Back]
	      The argument s is not a socket.

       EFAULT An invalid user space address was specified for a parameter.

       EMSGSIZE    [Toc]    [Back]
	      The  socket  requires  that  message be sent atomically, and the
	      size of the message to be sent made this impossible.

	      The socket is marked non-blocking and  the  requested  operation
	      would block.

       ENOBUFS    [Toc]    [Back]
	      The  output queue for a network interface was full.  This generally
 indicates that the interface has stopped sending,  but  may
	      be caused by transient congestion.  (This cannot occur in Linux,
	      packets are just silently dropped  when  a  device  queue  overflows.)

       EINTR  A signal occurred.

       ENOMEM No memory available.

       EINVAL Invalid argument passed.

       EPIPE  The  local  end  has  been  shut	down  on a connection oriented
	      socket.  In this case the process will also  receive  a  SIGPIPE
	      unless MSG_NOSIGNAL is set.

CONFORMING TO    [Toc]    [Back]

       4.4BSD,	SVr4,  POSIX  1003.1g  draft (these function calls appeared in

       MSG_CONFIRM is a Linux extension.

NOTE    [Toc]    [Back]

       The prototypes given above follow the  Single  Unix  Specification,  as
       glibc2  also  does;  the  flags	argument  was  `int'  in  BSD 4.*, but
       `unsigned int' in libc4 and libc5; the len argument was	`int'  in  BSD
       4.*  and  libc4, but `size_t' in libc5; the tolen argument was `int' in
       BSD 4.* and libc4 and libc5.  See also accept(2).

SEE ALSO    [Toc]    [Back]

       fcntl(2), recv(2), select(2),  getsockopt(2),  sendfile(2),  socket(2),
       write(2), socket(7), ip(7), tcp(7), udp(7)

Linux Man Page			    1999-07			       SEND(2)
[ Back ]
 Similar pages
Name OS Title
sendmsg Tru64 Send a message from a socket using a message structure
send Tru64 Send messages on a socket
sendfile FreeBSD send a file to a socket
sendto Tru64 Send messages through a socket
sendfile HP-UX send the contents of a file through a socket
sendfile Tru64 Send the contents of a file through a socket
shutdown Tru64 Shut down socket send and receive operations
sendfile64 HP-UX send the contents of a Large File through a socket
recvmsg Tru64 Receive a message from a socket using a message structure
send Tru64 send a message (only available within the message handling system, mh)
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service