Provided by:
manpages-es_1.55-10_all 
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)