Provided by: manpages-es_1.55-10_all 

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)
Página man de Linux 31 diciembre 2002 SEND(2)