Provided by: manpages-es_1.55-10_all bug

NOMBRE

       send, sendto, sendmsg - envía un mensaje de un conector (socket)

SINOPSIS

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

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

DESCRIPCIÓN

       Send, sendto y sendmsg son utilizados para transmitir un mensaje a otro
       conector.   Send  solo  puede  ser  usado cuando un conector está en un
       estado connected mientras sendto y sendmsg  pueden  ser  utilizados  en
       cualquier momento.

       La  dirección  de  destino viene dada por to con tolen especificando su
       tamaño. La longitud del mensaje viene dada por len.  Si el  mensaje  es
       demasiado  largo  para  pasar  automáticamente  a  través del protocolo
       inferior, se devuelve el error EMSGSIZE y el mensaje no es transmitido.

       La llamada send lleva implícita el que  no  se  indiquen  los  posibles
       errores  en  la  entrega.  Los errores detectados localmente se indican
       devolviendo un valor -1.

       Cuando el mensaje no cabe en el buffer de envío del conector,  send  se
       bloquea, a no ser que el conector se haya colocado en el modo de E/S no
       bloqueante. En el modo no bloqueante devolvería EAGAIN en este caso. Se
       puede  utilizar  la llamada select(2) para determinar cuando es posible
       enviar más información.

       El parámetro flags es una palabra de  opciones  y  puede  contener  las
       siguientes opciones:

       MSG_OOB
              Enviar  datos  fuera  de  orden(out-of-band)  en  conectores que
              soportan  esta  noción  (p.ej.    SOCK_STREAM);   el   protocolo
              subyacente también debe soportar datos fuera de orden.

       MSG_DONTROUTE
              No usar un ``gateway'' para enviar el paquete, enviar sólo a los
              ordenadores que se encuentren en redes conectadas  directamente.
              Normalmente,  esto sólo lo utilizan los programas de diagnóstico
              y enrutamiento. Esta opción sólo está definida para familias  de
              protocolos que enrutan. Los conectores de paquetes no enrutan.

       MSG_DONTWAIT
              Habilitar  el  funcionamiento  no bloqueante. Si la operación se
              bloqueara, se devolvería EAGAIN (esto también se puede habilitar
              usando  la  bandera  O_NONBLOCK  con  la  operación  F_SETFL  de
              fcntl(2)).

       MSG_NOSIGNAL
              Solicitar el no enviar SIGPIPE en caso de  error  en  conectores
              orientados  a conexión cuando el otro extremo rompa la conexión.
              Todavía se devuelve el error EPIPE.

       MSG_CONFIRM (Linux 2.3+ solamente)
              Le dice a la capa  de  enlace  que  se  produjo  el  proceso  de
              redirección:  tienes una confirmación positiva del otro lado. Si
              la  capa  de  enlace  no  recibe  esta   respuesta   interrogará
              regularmente  al  vecino  (p.e.  a  través  de  un  mensaje  ARP
              unicast).  Sólo válida para conectores SOCK_DGRAM y  SOCK_RAW  y
              actualmente  sólo  está  implementada en IPv4 e IPv6. Vea arp(7)
              para más detalles.

       La definición de la estructura msghdr se muestra  a  continuación.  Vea
       recv(2) y más abajo para una descripción exacta de sus campos.

              struct msghdr {
                  void         * msg_name;     /* dirección opcional */
                  socklen_t    msg_namelen;    /* tamaño de la dirección */
                  struct iovec * msg_iov;      /* vector dispersión/reunión */
                  size_t       msg_iovlen;     /* # elementos en msg_iov */
                  void         * msg_control;  /* datos auxiliares, vea más abajo */
                  socklen_t    msg_controllen; /* longitud del buffer de datos auxiliares */
                  int          msg_flags;      /* banderas en el mensaje recibido */
              };

       Puede  enviar  información de control usando los miembros msg_control y
       msg_controllen.  La longitud máxima del buffer de control que el núcleo
       puede   procesar   está   limitada   por   conector   por   la   sysctl
       net.core.optmem_max.  Vea socket(7).

VALOR DEVUELTO

       Las llamadas devuelven el numero de caracteres enviados,  o  -1  si  ha
       ocurrido un error.

ERRORES

       Estos   son  algunos  errores  estándares  generados  por  la  capa  de
       conectores.  Los módulos de los protocolos subyacentes pueden generar y
       devolver errores adicionales. Vea sus páginas de manual respectivas.

       EBADF  Se ha especificado un descriptor no válido.

       ENOTSOCK
              El argumento s no es un conector.

       EFAULT Se  ha  especificado como parámetro una dirección incorrecta del
              espacio de usuario.  tro.

       EMSGSIZE
              El   conector   requiere   que   este   mensaje   sea    enviado
              automáticamente,  y  el tamaño del mensaje a ser enviado lo hace
              imposible.

       EAGAIN o EWOULDBLOCK
              El conector está marcado  como  no  bloqueante  y  la  operación
              solicitada lo bloquearía.

       ENOBUFS
              La  cola  de  salida  del  interfaz  de  red  está  llena.  Esto
              generalmente indica que el interfaz ha parado  de  enviar,  pero
              puede  ser  causado por una congestión temporal.  (Esto no puede
              ocurrir  en  Linux,  los  paquetes   simplemente   se   suprimen
              silenciosamente cuando la cola de un dispositivo se desborda.)

       EINTR  Se ha producido una señal.

       ENOMEM No hay memoria disponible.

       EINVAL Se ha pasado un argumento inválido.

       EPIPE  Se  ha  desconectado el extremo local en un conector orientado a
              conexión.  En este caso el proceso tambíen  recibirá  una  señal
              SIGPIPE a menos que se active la opción MSG_NOSIGNAL.

CONFORME A

       4.4BSD,   SVr4,  borrador  POSIX  1003.1g  (estas  llamadas  a  función
       aparecieron en 4.2BSD).

       MSG_CONFIRM es una extensión de Linux.

NOTA

       Los  prototipos  indicados  más  arriba   siguen   `the   Single   Unix
       Specification',  ya  que glibc2 también lo hace; el argumento flags era
       `int' en BSD 4.* pero `unsigned int' en libc4 y libc5; el argumento len
       era `int' en BSD 4.* y libc4 pero `size_t' en libc5; el argumento tolen
       era `int' en BSD 4.*, libc4 y libc5.  Vea también accept(2).

VÉASE TAMBIÉN

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