Función de envío de Linux C
Transmitir mensajes a través de sockets
Funciones relacionadas
sendto, sendmsg, recv, recvfrom, recvmsg, socket
Archivo de encabezado
#include lt; sys/socket.h gt;
Definir función
ssize_t send (int s, const void *msg, size_t len, int flags);
Descripción del parámetro
El primer parámetro especifica el descriptor del socket del remitente;
El segundo parámetro especifica una aplicación de almacenamiento para enviar el búfer de datos;
El tercer parámetro especifica el número de caracteres de los datos reales que se enviarán;
El cuarto parámetro generalmente se establece en 0.
Descripción de la función
send() se utiliza para transferir datos desde el socket especificado al otro host. El enchufe debe estar conectado cuando se utiliza enviar. enviar no contiene un mensaje que indique una falla en la transmisión y devolverá -1 si se detecta un error local. Por lo tanto, si el envío regresa con éxito, no significa necesariamente que el proceso en el otro extremo de la conexión haya recibido los datos. Lo único que se garantiza es que cuando el envío regresa con éxito, los datos se han enviado a la red sin errores.
Para los protocolos que admiten la configuración de límites para paquetes, si un solo paquete excede el tamaño máximo admitido por el protocolo, el envío falla y errno se establece en EMSGSIZE para los protocolos de flujo de bytes, el envío se bloqueará hasta que se completen los datos; ser transmitido.
El parámetro flags tiene las siguientes opciones:
MSG_DONTROUTE No enrutar datos fuera de la red local
MSG_DONTWAIT permite operaciones sin bloqueo (equivalente a usar O_NONBLOCK )
p>
MSG_EOR Si el protocolo lo admite, este es el final del registro
MSG_OOB Si el protocolo lo admite, envía datos fuera de banda p>
MSG_NOSIGNAL prohíbe enviar información de excepción al sistema
Valor de retorno
Si tiene éxito, se devolverá el número de caracteres realmente transmitidos. Si falla, se devolverá -1. La causa del error se almacena en errno.
Código de error
Los parámetros EBADF son un código de procesamiento de socket ilegal.
Hay un puntero en el parámetro EFAULT que apunta a un espacio de memoria inaccesible.
El parámetro WNOTSOCK es un descriptor de archivo, no un socket.
EINTR fue interrumpido por una señal.
EAGAIN Esta acción bloqueará el proceso, pero el socket del parámetro s no se puede bloquear.
ENOBUFS El sistema no tiene memoria buffer.
EINVAL Los parámetros pasados a la llamada al sistema son incorrectos.