VMS Help  —  TCPIP Services, Programming Interfaces, Socket API Functions, send()
    Sends bytes through a socket to its connected peer.
    The $QIO equivalent is the IO$_WRITEVBLK function.
    Format
      #include  <types.h>
      #include  <socket.h>
      int send  ( int s, char *msg, int len, int flags );
                (_DECC_V4_SOURCE)
      ssize_t send  ( int s, const void *msg, size_t len, int flags
                    ); (not_DECC_V4_SOURCE)

1  –  Arguments

 s
    A socket descriptor created with the socket() function that was
    connected to another socket using the accept() or connect()
    function.
 msg
    A pointer to a buffer containing the data to be sent.
 len
    The length, in bytes, of the data pointed to by msg.
 flags
    Can be either 0 or MSG_OOB. If it is MSG_OOB, the data is sent
    out of band. Data can be received before other pending data on
    the receiving socket if the receiver also specifies MSG_OOB in
    the flag argument of its recv() or recvfrom()  call.

2  –  Description

    This function sends data to a connected peer.
    You can use this function only on connected sockets. To send
    data on an unconnected socket, use the sendmsg() or sendto()
    function. The send() function passes data along to its connected
    peer, which can receive the data by using the recv() or read()
    function.
    Normally the send() function blocks if there is no space for
    the incoming data in the buffer. It waits until the buffer space
    becomes available. If the socket is set to nonblocking and there
    is no space for the data, the send() function fails with the
    EWOULDBLOCK error.
    If the message is too large to be sent in one piece, and the
    socket type is SOCK_DGRAM, which requires that messages be sent
    in one piece, send() fails with the EMSGSIZE error.
    If the address specified is an INADDR_BROADCAST address, then
    the SO_BROADCAST socket option must have been set and the process
    must have SYSPRV or BYPASS privilege for the I/O operation to
    succeed.
    A success return from the send() does not guarantee that the data
    has been received by the peer. All errors (except EWOULDBLOCK)
    are detected locally. To determine when it is possible to send
    more data, use the select() function.
    Related Functions
    See also read(), recv(),  recvmsg(), recvfrom(), getsockopt(),
    and socket().

3  –  Return Values

    n                  The number of bytes sent. This value normally
                       equals len.
    -1                 Error; errno is set to indicate the error.

4  –  Errors

    EBADF              The socket descriptor is invalid.
    ECONNRESET         A connection was forcibly closed by a peer.
    EDESTADDRREQ       The socket is not connection-oriented, and no
                       peer address is set.
    EFAULT             The message argument is not in a readable or
                       writable part of the user address space.
    EINTR              A signal interrupted the send() before any
                       data was transmitted.
    EMSGSIZE           The message is too large to be sent all at
                       once, as the socket requires.
    ENETDOWN           The local network connection is not
                       operational.
    ENETUNREACH        The destination network is unreachable.
    ENOBUFS            The system has insufficient resources to
                       complete the call.
    ENOTCONN           The socket is not connected or has not had the
                       peer prespecified.
    ENOTSOCK           The socket descriptor is invalid.
    EOPNOTSUPP         The socket argument is associated with a
                       socket that does not support one or more of
                       the values set in flags.
    EWOULDBLOCK        The socket is marked nonblocking, and no space
                       is available for the send() function.
Close Help