connect(2) System Calls Manual connect(2) NOMBRE connect - inicia una conexion en un conector (socket) BIBLIOTECA Biblioteca Estandar C (libc, -lc) SINOPSIS #include int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); DESCRIPCION La llamada al sistema connect() conecta el socket al que hace referencia el descriptor de archivo sockfd con la direccion definida en addr. El argumento addrlen definira el tamano de addr. El formato de la direccion en addr se determina por el espacio de direcciones del socket sockfd; consulte socket(2) para mas detalles. Si el socket sockfd es de tipo SOCK_DGRAM, entonces addr es la direccion a la que se envian los datagramas por defecto y la unica direccion desde la que se reciben. Si el socket es de tipo SOCK_STREAM o SOCK_SEQPACKET, esta llamada intenta establecer una conexion con el socket vinculado a la direccion indicada en addr. Algunos sockets de protocolo (por ejemplo, los sockets de flujo de dominio UNIX) pueden ejecutar connect() correctamente una unica vez. Algunos sockets de protocolo (por ejemplo, los sockets de datagramas en los dominios UNIX e Internet) pueden usar connect() multiples veces para cambiar su asociacion. Algunos sockets de protocolo (por ejemplo, los sockets TCP, asi como los de datagramas en los dominios UNIX e Internet) pueden finalizar la asociacion al conectarse a una direccion cuyo miembro sa_family de sockaddr este definido en AF_UNSPEC. Posteriormente, el socket podra conectarse a otra direccion. AF_UNSPEC es compatible desde Linux 2.2. VALOR DEVUELTO Si la conexion o enlace tiene exito, se devuelve 0. En caso de error, se devuelve -1, y se asigna a la variable errno un valor apropiado. ERRORES Los siguientes solo son errores generales de conector. Puede haber otros codigos de error especificos del dominio. EACCES Para sockets de dominio UNIX, que se identifican por la ruta de acceso: Se deniega el permiso de escritura en el archivo del socket o se deniega el permiso de busqueda para uno de los directorios en el prefijo de la ruta. (Consulte tambien path_resolution(7).) EACCES EPERM El usuario ha intentado conectarse a una direccion de difusion (broadcast) sin que el conector tenga activa la opcion de difusion, o la peticion de conexion ha fallado debido a una regla del cortafuegos local. EACCES Tambien se puede retornar si una norma de SELinux denego una conexion (por ejemplo, si existe una norma que indica que un proxy HTTP solo puede conectarse a puertos asociados con servidores HTTP y el proxy intenta conectarse a un puerto diferente). EADDRINUSE La direccion local ya esta en uso. EADDRNOTAVAIL (Sockets de dominio de Internet) El socket al que hace referencia sockfd no se habia vinculado previamente a una direccion y, al intentar vincularlo a un puerto efimero, se determino que todos los numeros de puerto en el rango de puertos efimeros estan actualmente en uso. Consulte la explicacion de /proc/sys/net/ipv4/ip_local_port_range en ip(7). EAFNOSUPPORT La direccion pasada no tiene la familia de direcciones correcta en su campo sa_family. EAGAIN Para sockets de dominio UNIX sin bloqueo, el socket es sin bloqueo y la conexion no se puede completar inmediatamente. Para otras familias de sockets, no hay suficientes entradas en el cache de enrutamiento. EALREADY El conector es no bloqueante y todavia no se ha terminado un intento de conexion anterior. EBADF sockfd no es descriptor valido de archivos abiertos. ECONNREFUSED Un connect() en un conector de flujo, no ha econtrado a nadie a la esucha en la direccion remota. EFAULT La estructura de direccion del conector esta fuera del espacio de direcciones del usuario. EINPROGRESS El socket no es bloqueante y la conexion no se puede completar inmediatamente. (Los sockets de dominio UNIX fallaron con EAGAIN). Es posible usar select(2) o poll(2) para completar la conexion seleccionando el socket para escritura. Despues de que select(2) indique la capacidad de escritura, utilice getsockopt(2) para leer la opcion SO_ERROR en el nivel SOL_SOCKET y determinar si connect() se completo correctamente (SO_ERROR es cero) o no (SO_ERROR es uno de los codigos de error habituales que se listan aqui y explicain el motivo del fallo). EINTR La senal atrapada ha interrumpido la llamada del sistema; consulte signal(7). EISCONN El conector ya esta conectado. ENETUNREACH Red inaccesible. ENOTSOCK El descriptor de archivo sockfd no se refiere a un conector. EPROTOTYPE El tipo de socket no admite el protocolo de comunicaciones solicitado. Este error puede ocurrir, por ejemplo, al intentar conectar un socket de datagrama de dominio UNIX a un socket de flujo. ETIMEDOUT Finalizo el plazo de tiempo mientras se intentaba la conexion. El servidor puede estar demasiado ocupado para aceptar nuevas conexiones. Dese cuenta que para conectores IP el plazo de tiempo puede ser muy largo cuando se han habilitado los "syncookies" en el servidor. VERSIONES Los programas portables deben garantizar que addr.sun_path sea una cadena terminada en nulo para los sockets AF_UNIX. ESTANDARES POSIX.1-2024. HISTORIAL POSIX.1-2001, SVr4, 4.2BSD. NOTAS Si connect() falla, consideramos el estado del socket como no definido. Las aplicaciones portables deben cerrar el socket y crear uno nuevo para volver a conectar. EJEMPLOS En getaddrinfo(3) tiene un ejemplo del uso de connect(). VEASE TAMBIEN accept(2), bind(2), getsockname(2), listen(2), socket(2), path_resolution(7), selinux(8) TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Miguel Angel Sepulveda , Cesar D. Lobejon , Juan Piernas y Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Paginas de Manual de Linux 6.17 8 Febrero 2026 connect(2)