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

NOMBRE

       send, sendto, sendmsg - envia 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'ON

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

       La  direccion  de  destino viene dada por to con tolen especificando su
       tamano. La longitud del mensaje viene dada por len.  Si el  mensaje  es
       demasiado  largo  para  pasar  automaticamente  a  traves del protocolo
       inferior, se devuelve el error EMSGSIZE y el mensaje no es transmitido.

       La llamada send lleva implicita 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 envio 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 devolveria EAGAIN en este caso. Se
       puede  utilizar  la llamada select(2) para determinar cuando es posible
       enviar mas informacion.

       El parametro 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  nocion  (p.ej.    SOCK_STREAM);   el   protocolo
              subyacente tambien debe soportar datos fuera de orden.

       MSG_DONTROUTE
              No usar un ``gateway'' para enviar el paquete, enviar solo a los
              ordenadores que se encuentren en redes conectadas  directamente.
              Normalmente,  esto solo lo utilizan los programas de diagnostico
              y enrutamiento. Esta opcion solo esta definida para familias  de
              protocolos que enrutan. Los conectores de paquetes no enrutan.

       MSG_DONTWAIT
              Habilitar  el  funcionamiento  no bloqueante. Si la operacion se
              bloqueara, se devolveria EAGAIN (esto tambien se puede habilitar
              usando  la  bandera  O_NONBLOCK  con  la  operacion  F_SETFL  de
              fcntl(2)).

       MSG_NOSIGNAL
              Solicitar el no enviar SIGPIPE en caso de  error  en  conectores
              orientados  a conexion cuando el otro extremo rompa la conexion.
              Todavia se devuelve el error EPIPE.

       MSG_CONFIRM (Linux 2.3+ solamente)
              Le dice a la capa  de  enlace  que  se  produjo  el  proceso  de
              redireccion:  tienes una confirmacion positiva del otro lado. Si
              la  capa  de  enlace  no  recibe  esta   respuesta   interrogara
              regularmente  al  vecino  (p.e.  a  traves  de  un  mensaje  ARP
              unicast).  Solo valida para conectores SOCK_DGRAM y  SOCK_RAW  y
              actualmente  solo  esta  implementada en IPv4 e IPv6. Vea arp(7)
              para mas detalles.

       La definicion de la estructura msghdr se muestra  a  continuacion.  Vea
       recv(2) y mas abajo para una descripcion exacta de sus campos.

              struct msghdr {
                  void         * msg_name;     /* direccion opcional */
                  socklen_t    msg_namelen;    /* tamano de la direccion */
                  struct iovec * msg_iov;      /* vector dispersion/reunion */
                  size_t       msg_iovlen;     /* # elementos en msg_iov */
                  void         * msg_control;  /* datos auxiliares, vea mas abajo */
                  socklen_t    msg_controllen; /* longitud del buffer de datos auxiliares */
                  int          msg_flags;      /* banderas en el mensaje recibido */
              };

       Puede  enviar  informacion de control usando los miembros msg_control y
       msg_controllen.  La longitud maxima del buffer de control que el nucleo
       puede   procesar   esta   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  estandares  generados  por  la  capa  de
       conectores.  Los modulos de los protocolos subyacentes pueden generar y
       devolver errores adicionales. Vea sus paginas de manual respectivas.

       EBADF  Se ha especificado un descriptor no valido.

       ENOTSOCK
              El argumento s no es un conector.

       EFAULT Se  ha  especificado como parametro una direccion incorrecta del
              espacio de usuario.  tro.

       EMSGSIZE
              El   conector   requiere   que   este   mensaje   sea    enviado
              automaticamente,  y  el tamano del mensaje a ser enviado lo hace
              imposible.

       EAGAIN o EWOULDBLOCK
              El conector esta marcado  como  no  bloqueante  y  la  operacion
              solicitada lo bloquearia.

       ENOBUFS
              La  cola  de  salida  del  interfaz  de  red  esta  llena.  Esto
              generalmente indica que el interfaz ha parado  de  enviar,  pero
              puede  ser  causado por una congestion 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 senal.

       ENOMEM No hay memoria disponible.

       EINVAL Se ha pasado un argumento invalido.

       EPIPE  Se  ha  desconectado el extremo local en un conector orientado a
              conexion.  En este caso el proceso tambien  recibira  una  senal
              SIGPIPE a menos que se active la opcion MSG_NOSIGNAL.

CONFORME A

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

       MSG_CONFIRM es una extension de Linux.

NOTA

       Los  prototipos  indicados  mas  arriba   siguen   `the   Single   Unix
       Specification',  ya  que glibc2 tambien 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 tambien accept(2).

V'EASE TAMBI'EN

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

Pagina man de Linux            31 diciembre 2002                       SEND(2)