unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-4.1.3)
Page:
Section:
Apropos / Subsearch:
optional field

SEND(2)                       System Calls Manual                      SEND(2)



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

SYNOPSIS
       #include <&lt;sys/types.h>&gt;
       #include <&lt;sys/socket.h>&gt;

       int send(s, msg, len, flags)
       int s;
       char *msg;
       int len, flags;

       int sendto(s, msg, len, flags, to, tolen)
       int s;
       char *msg;
       int len, flags;
       struct sockaddr *to;
       int tolen;

       int sendmsg(s, msg, flags)
       int s;
       struct msghdr *msg;
       int flags;

DESCRIPTION
       s  is a socket created with socket(2).  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,  then  the
       error EMSGSIZE is returned, and the message is not transmitted.

       No  indication  of  failure to deliver is implicit in a send().  Return
       values of -1 indicate some locally detected errors.

       If no buffer space is available at the socket to hold the message to be
       transmitted,  then  send()  normally blocks, unless the socket has been
       placed in non-blocking I/O mode.  The select(2) call  may  be  used  to
       determine when it is possible to send more data.

       If  the process calling send(), sendmsg() or sendto() receives a signal
       before any data are buffered to be sent, the system call  is  restarted
       unless the calling process explicitly set the signal to interrupt these
       calls using sigvec() or sigaction() (see the discussions  of  SV_INTER-
       RUPT on sigvec(2), and SA_INTERRUPT on sigaction(3V)).

       The flags parameter is formed by ORing one or more of the following:

       MSG_OOB             Send  ``out-of-band''  data on sockets that support
                           this notion.  The  underlying  protocol  must  also
                           support   ``out-of-band''  data.   Currently,  only
                           SOCK_STREAM sockets created in the AF_INET  address
                           family support out-of-band data.

       MSG_DONTROUTE       The  SO_DONTROUTE option is turned on for the dura-
                           tion of the operation.  This is usually  used  only
                           by diagnostic or routing programs.

       See recv(2) for a description of the msghdr structure.

RETURN VALUES
       On  success, these functions return the number of bytes sent.  On fail-
       ure, they return -1 and set errno to indicate the error.

ERRORS
       EBADF               s is an invalid descriptor.

       EFAULT              The data was specified to be sent to a non-existent
                           or protected part of the process address space.

       EINTR               The  calling  process  received a signal before any
                           data could be buffered to be sent, and  the  signal
                           was set to interrupt the system call.

       EINVAL              len  is  not  the  size  of a valid address for the
                           specified address family.

       EMSGSIZE            The socket requires that  message  be  sent  atomi-
                           cally,  and the size of the message to be sent made
                           this impossible.

       ENOBUFS             The system was unable to allocate an internal  buf-
                           fer.  The operation may succeed when buffers become
                           available.

       ENOBUFS             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.

       ENOTSOCK            s is a descriptor for a file, not a socket.

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

SEE ALSO
       connect(2), fcntl(2V), getsockopt(2),  recv(2),  select(2),  socket(2),
       write(2V)



                                21 January 1990                        SEND(2)