4.4BSD/usr/share/man/cat2/sendmsg.0

Compare this file to the similar file:
Show the results in this format:

SEND(2)                     BSD Programmer's Manual                    SEND(2)

NNAAMMEE
     sseenndd, sseennddttoo, sseennddmmssgg - send a message from a socket

SSYYNNOOPPSSIISS
     ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
     ##iinncclluuddee <<ssyyss//ssoocckkeett..hh>>

     _i_n_t
     sseenndd(_i_n_t _s, _c_o_n_s_t _v_o_i_d _*_m_s_g, _i_n_t _l_e_n, _i_n_t _f_l_a_g_s);

     _i_n_t
     sseennddttoo(_i_n_t _s, _c_o_n_s_t _v_o_i_d _*_m_s_g, _i_n_t _l_e_n, _i_n_t _f_l_a_g_s,
             _c_o_n_s_t _s_t_r_u_c_t _s_o_c_k_a_d_d_r _*_t_o, _i_n_t _t_o_l_e_n);

     _i_n_t
     sseennddmmssgg(_i_n_t _s, _c_o_n_s_t _s_t_r_u_c_t _m_s_g_h_d_r _*_m_s_g, _i_n_t _f_l_a_g_s);

DDEESSCCRRIIPPTTIIOONN
     SSeenndd(), sseennddttoo(), and sseennddmmssgg() are used to transmit a message to another
     socket.  SSeenndd() may be used only when the socket is in a _c_o_n_n_e_c_t_e_d state,
     while sseennddttoo() and sseennddmmssgg() may be used at any time.

     The address of the target is given by _t_o with _t_o_l_e_n specifying its size.
     The length of the message is given by _l_e_n. 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 sseenndd().  Locally de-
     tected errors are indicated by a return value of -1.

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

     The _f_l_a_g_s parameter may include one or more of the following:

     #define MSG_OOB        0x1  /* process out-of-band data */
     #define MSG_DONTROUTE  0x4  /* bypass routing, use direct interface */

     The flag MSG_OOB is used to send ``out-of-band'' data on sockets that
     support this notion (e.g.  SOCK_STREAM); the underlying protocol must al-
     so support ``out-of-band'' data.  MSG_DONTROUTE is usually used only by
     diagnostic or routing programs.

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

RREETTUURRNN VVAALLUUEESS
     The call returns the number of characters sent, or -1 if an error oc-
     curred.

EERRRROORRSS
     SSeenndd(), sseennddttoo(), and sseennddmmssgg() fail if:

     [EBADF]     An invalid descriptor was specified.

     [ENOTSOCK]  The argument _s is not a socket.

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

     [EMSGSIZE]  The socket requires that message be sent atomically, and the


                 size of the message to be sent made this impossible.

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

     [ENOBUFS]   The system was unable to allocate an internal buffer.  The
                 operation may succeed when buffers become available.

     [ENOBUFS]   The output queue for a network interface was full.  This gen-
                 erally indicates that the interface has stopped sending, but
                 may be caused by transient congestion.

SSEEEE AALLSSOO
     fcntl(2),  recv(2),  select(2),  getsockopt(2),  socket(2),  write(2)

HHIISSTTOORRYY
     The sseenndd function call appeared in 4.2BSD.

4.2 Berkeley Distribution        June 4, 1993                                2